我已经开始学习Rust,并尝试实现一个简单的一维元胞自动机。我想将元胞自动机状态 (Board
) 表示为一个结构体,其中包含大小和两个不同的向量(大小相同)。我尝试过:
struct Board {
n: usize,
cur: Vec<u32>,
next: Vec<u32>,
}
impl Board {
fn new(size: usize) -> Board {
Board {
n: size,
cur: vec![0;size],
next: vec![0;size],
}
}
}
目前为止还不错。我也能够突变两个向量。但是现在我想要交换这两个向量(或者说它们的引用),例如:
fn swap(&mut self) -> &Board {
let tmp = self.cur;
self.cur = self.next;
self.next = tmp;
self
}
出现了错误:cannot move out of borrowed content [E0507]
,我认为我可以理解。我还尝试了类似标题的问题中找到的mem::swap
,但没有成功。
我该如何使这个示例工作?(由于我是Rust的初学者,请随时建议不同的数据表示方法)。