如何在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]
]
}
}
}
我希望他们可以得到可比的东西的向量,而不是让消费者决定确切的类型。
答案 0 :(得分:1)
类型Vec<Ord>
将是Vec
,其中每个项目都是一个特征对象。您要执行的操作是Vec<T>
,然后将T
上绑定的特征设置为: Ord
,例如
struct Foo<T: Ord> {
arr: Vec<T>,
}