0
基本上我需要製作一個結構,其中包含VecDeque
的State
s。到目前爲止我的代碼:如何使用通用VecDeque?
type State = [[bool]];
pub struct MyStruct {
queue: VecDeque<State>,
}
impl MyStruct {...}
當編譯此代碼我
error: the trait `core::marker::Sized` is not implemented for the type `[[bool]]` [E0277]
note: `[[bool]]` does not have a constant size known at compile-time
結束時,我想的是,在隊列中有State
是不是好主意好,所以我想引用隊列(這也適合我的申請)。
在這種情況下,更奇怪的錯誤occures:
error: missing lifetime specifier [E0106]
如何爲了工作我寫了上面的方式創建這樣的結構呢?我真的不是Rust專家。
感謝您的回答,我打算做一個固定大小的2D布爾數組。我需要最大。訪問速度,因此我嘗試了C/C++使用的常規數組。 Vec快嗎? – petrbel
如果你想要一個固定大小的數組,可以使用一個固定大小的數組(比如'[bool; 32]')。 'Vec'只是一個動態大小的連續數組,就像C++中的'std :: vector'一樣。類似Rust中的'[bool]'在C/C++中有* no *等價物;它根本不能用這些語言來表達。像'bool []''這樣的原始數組在Rust中並不具有完全相同的效果,因爲它們基本上是不安全的。最接近的是像'&[bool]'這樣的借用數組。但是,真的,只要使用'Vec',除非分析顯示它是一個問題。 –
如果你擔心速度,你不應該使用雙重間接。 [嘗試展開它。](http://is.gd/SC0eNa)如果使用固定長度的堆棧數組,這並不重要,但是。 – Veedrac