有没有办法让Rust泛型只接受原始类型?我想稍后在值中的位上迭代,我知道这只有在基元类型中才可能。

struct MyStruct<T> {
    my_property: T // my_property HAS to be a primitive type
}

最佳答案

我相信你能得到的最接近的东西是Primitivetrait,它是为内置数值类型实现的。它是其他几个数字特征的组合,最后允许比特修改值。您可能还需要添加BitAnd/BitOr/etc.特征,因为Primitive似乎不允许这些操作:

fn iter_bits<T: Primitive+BitAnd<T, T>+BitOr<T, T>>(x: T) { /* whatever */ }

07-24 21:41