需要通用类型实现复制或克隆 |来自固定泛型数组的泛型向量
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
上手动实现 Copy
或 Clone
,因为我不知道 T
是什么。我不想使用 Vec<&T>
因为我真的不想管理生命周期。我认为解决方案是以某种方式要求 T
实现 Clone
或 Copy
,这对我来说很好,但我也不知道该怎么做。欢迎就此事提出任何和所有建议。
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()
}
}
}
另请参阅:
我正在尝试在 Rust 中实现一个自定义数据结构,其行为类似于数学中的集合(支持并集、交集、不相交比较等)我希望构造函数(关联函数 new)采用泛型的一部分输入 T
并填充类型 T
.
#[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
上手动实现 Copy
或 Clone
,因为我不知道 T
是什么。我不想使用 Vec<&T>
因为我真的不想管理生命周期。我认为解决方案是以某种方式要求 T
实现 Clone
或 Copy
,这对我来说很好,但我也不知道该怎么做。欢迎就此事提出任何和所有建议。
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()
}
}
}
另请参阅: