我如何在 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
上设置 trait bound成为: Ord
,例如
struct Foo<T: Ord> {
arr: Vec<T>,
}
关于generics - 如何在 Rust 中声明可比较的东西的通用向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55084689/