如何定义Rust中可比的矢量?
说,i32
,i16
......
我试过arr: Vec<Ord>
,但编译器抱怨the trait "std::cmp::Ord" cannot be made into an object
基本上我需要存储一个可比对象矢量的矢量。例如
struct Setup<T: Ord + Copy> {
arr: Vec<Vec<T>>
}
impl<T: Ord + Copy> Setup<T> {
fn new() -> Self {
Self {
arr: vec![
vec![1, 2, 3, 4, 5],
vec![1.0, 2.0, 3.0]
]
}
}
}
而不是让消费者决定这种类型究竟是什么,我希望他们可以获得类似的东西。
类型Vec<Ord>
将是Vec
,其中每个项目是特征对象。你想要做的是做Vec<T>
,然后将T
上的特征设置为: Ord
,例如
struct Foo<T: Ord> {
arr: Vec<T>,
}