【发布时间】:2016-02-26 11:00:07
【问题描述】:
我已经开始学习 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 的初学者,请毫不犹豫地提出不同的数据表示)。
【问题讨论】:
标签: struct reference rust swap