3
我想创建一个泛型结构,它使用“整数类型”引用到数组中。由于性能方面的原因,我希望能够轻松指定是否使用u16
,u32
或u64
。像这样的东西(这显然是无效的防锈代码):限制泛型类型为几种类型
struct Foo<T: u16 or u32 or u64> { ... }
有没有什么办法来表达这一点?
我想创建一个泛型结构,它使用“整数类型”引用到数组中。由于性能方面的原因,我希望能够轻松指定是否使用u16
,u32
或u64
。像这样的东西(这显然是无效的防锈代码):限制泛型类型为几种类型
struct Foo<T: u16 or u32 or u64> { ... }
有没有什么办法来表达这一点?
对于数组引用,通常只使用usize
而不是不同的整数类型。
但是,做你是什么,你可以创建后的新特点,实现该特性为u16
,u32
和u64
,然后限制吨至您的新特点。
pub trait MyNewTrait {}
impl MyNewTrait for u16 {}
impl MyNewTrait for u32 {}
impl MyNewTrait for u64 {}
struct Foo<T: MyNewTrait> { ... }
然后你可以还可以添加方法到MyNewTrait
和impl
s到封装具体到u16
,u32
和u64
逻辑。
是的,但是这不允许我用u16,u32或u64做所有我能做的事 - 例如我无法使用值来检索数组的元素,比较两个值等。 –
@HenningKoehler:您可以,您只需要在特征级别声明它。这就是'酒吧特质MyNewTrait:添加
我想,但这也很快变得单调乏味......并且为了引用我需要的矢量转换为usize,对于任意类型可以添加,相乘等似乎不是很安全的。 –