generics - 如何在 Rust 中声明可比较的东西的通用向量

标签 generics rust

我如何在 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/

相关文章:

rust - 如何等待需要回调的函数?

java - Bean 验证应用于接口(interface)类型

generics - 标准二进制 maxBy 函数

java - 我还必须做什么才能让我的方法处理任何类型的对象

java - 创建 T 类型的 N 维数组并填充它

rust - 尝试收集到向量中但失败并返回 "a collection cannot be built over elements of type <...>"

build - 如何让运行 Cargo 构建脚本成为可选的?

vector - 如何连接两个切片或两个向量并仍然可以访问原始值?

rust - 如何使用Serde在结构中反序列化json格式的结构数组?

swift - 如何在 Swift 中实现泛型转换初始化器?