基本上我需要创建一个包含VecDeque
State
s的结构。到目前为止我的代码:
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
根本不是好主意,所以我尝试了一个引用队列(也适用于我的应用程序)。
type State = [[bool]];
pub struct MyStruct {
queue: VecDeque<&State>,
}
impl MyStruct {...}
在这种情况下,会出现更奇怪的错误:
error: missing lifetime specifier [E0106]
如何创建这样的结构以便按照我上面的方式工作?我真的不是Rust专家。
答案 0 :(得分:5)
基本问题是[[bool]]
毫无意义。 [bool]
为dynamically sized,您无法获得动态大小值的数组,因此[[bool]]
是不可能的。
目前还不完全清楚你在这里要做的事情。最明显的解决方案是仅使用Vec
:
pub struct MyStruct {
queue: VecDeque<Vec<Vec<bool>>>,
}
至于你的更奇怪的错误&#34;,这表明你还没有读过Rust Book,特别是chapter on Lifetimes。为了编写包含借用指针的结构,你有来指定生命周期。