Как объявить общий вектор сопоставимых материалов в ржавчине - PullRequest
0 голосов
/ 10 марта 2019

Как определить вектор сравнимого в 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]
                ]
            }
        }
    }

Вместо того, чтобы позволить потребителю решить, какой именно тип, я хотел бы, чтобы он мог получить вектор сопоставимых материалов.

1 Ответ

1 голос
/ 10 марта 2019

Тип Vec<Ord> будет Vec, где каждый элемент является объектом черты. То, что вы хотели бы сделать, это сделать Vec<T> и затем установить предел черты для T равным : Ord, например

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