今天是2021年的第一天,大家新的一年也要好好學習Rust呀~
在很多其他語言中,靜態數組雖然是靜態的,但是我們卻可以「給它在運行時中指定一個動態的長度」。但在Rust中由於數組中的N並不是範型,所以我們無法寫出如下的代碼:
structFoo {
data: [i32; N]
}
今天我們介紹的generic-array庫定義了trait 和結構體,這樣我們就可以寫出剛才我們想要的等價結構體了:
structFoo {
data: GenericArray
}
其中對於庫(一個範型的數值系統)中的無符號數,有默認的實現,因此如果我們可以這樣定義一個長度為5的數組
usegeneric_array::typenum::U5;
structFoo {
data: GenericArray
}
fnmain() {
letfoo = Foo::;
}
而基本上就和差不多
usegeneric_array::typenum::U5;
structFoo {
data: GenericArray
}
fnmain() {
letfoo = Foo::;
}
如此一來我們就可以繞開Rust本身的限制,對靜態數組的長度使用範型,讓它動起來~不過其實Rust 2021發行版本據說就要原生支持這一功能了,大家也可以多多關注。結合本次介紹的的原始碼跟一下這個事情~祝大家元旦快樂~
—— 分享新聞,還能獲得積分兌換好禮哦 ——