我已經開始學習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的初學者,請不要猶豫,建議一個不同的數據表示形式)。