如何在锈中声明可比较材料的通用矢量

时间:2019-03-10 05:18:59

标签: generics rust

如何在Rust中定义可比向量?

i32i16 ...

我尝试了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]
                ]
            }
        }
    }

我希望他们可以得到可比的东西的向量,而不是让消费者决定确切的类型。

1 个答案:

答案 0 :(得分:1)

类型Vec<Ord>将是Vec,其中每个项目都是一个特征对象。您要执行的操作是Vec<T>,然后将T上绑定的特征设置为: Ord,例如

struct Foo<T: Ord> {
  arr: Vec<T>,
}