需要通用类型实现复制或克隆 |来自固定泛型数组的泛型向量

Require generic type implements copy or clone | Vector of generics from fixed array of generics

我正在尝试在 Rust 中实现一个自定义数据结构,其行为类似于数学中的集合(支持并集、交集、不相交比较等)我希望构造函数(关联函数 new)采用泛型的一部分输入 T 并填充类型 T.

的 Vector
#[derive(Debug, PartialEq)]
pub struct CustomSet<T> {
    elements: Vec<T>
}

impl<T> CustomSet<T> {
    pub fn new(input: &[T]) -> Self {
       let mut elements = Vec::new();
       for elm in input {
           elements.push(*elm);
       }
       CustomSet {
           elements
       }
    }
}

这让编译器非常不高兴,因为 T 不一定实现 Copy(或 Clone)。我无法在 T 上手动实现 CopyClone,因为我不知道 T 是什么。我不想使用 Vec<&T> 因为我真的不想管理生命周期。我认为解决方案是以某种方式要求 T 实现 CloneCopy,这对我来说很好,但我也不知道该怎么做。欢迎就此事提出任何和所有建议。

Copy 通用实现中的约束:

#[derive(Debug, PartialEq)]
pub struct CustomSet<T> {
    elements: Vec<T>
}

impl<T: Copy> CustomSet<T> {
    pub fn new(input: &[T]) -> Self {
       CustomSet {
           elements: input.to_vec()
       }
    }
}

Clone 通用实现中的约束:

#[derive(Debug, PartialEq)]
pub struct CustomSet<T> {
    elements: Vec<T>
}

impl<T: Clone> CustomSet<T> {
    pub fn new(input: &[T]) -> Self {
       CustomSet {
           elements: input.to_vec()
       }
    }
}

另请参阅: