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,對於任意類型可以添加,相乘等似乎不是很安全的。 –