如何使用通用VecDeque?

时间:2015-08-17 07:19:46

标签: rust lifetime

基本上我需要创建一个包含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专家。

1 个答案:

答案 0 :(得分:5)

基本问题是[[bool]] 毫无意义[bool]dynamically sized,您无法获得动态大小值的数组,因此[[bool]]是不可能的。

目前还不完全清楚你在这里要做的事情。最明显的解决方案是仅使用Vec

pub struct MyStruct {
    queue: VecDeque<Vec<Vec<bool>>>,
}

至于你的更奇怪的错误&#34;,这表明你还没有读过Rust Book,特别是chapter on Lifetimes。为了编写包含借用指针的结构,你来指定生命周期。