我有一個Element
s的數組,我想遍歷它做一些事情,然後遍歷循環內的所有Element
做些事情。元素之間有一個關係,所以我想遍歷所有其他元素來檢查一些東西。這些元素是可變參考的原因。這有點寬泛,但我試圖成爲一般(也許我不應該)。如何在同一元素上迭代另一個可變迭代內的可變元素?
struct Element;
impl Element {
fn doSomething(&self, e: &Element) {}
}
fn main() {
let mut elements = [Element, Element, Element, Element];
for e in &mut elements {
// Do stuff...
for f in &mut elements {
e.doSomething(f);
}
}
}
正如預期的那樣,我得到這個錯誤:
cannot borrow
elements
as mutable more than once at a time
我知道這是a normal behavior in Rust,但什麼是推薦的方式,以避免這個錯誤?我應該先複製這些元素嗎?忘記循環並以不同的方式迭代?瞭解代碼設計?
有沒有一種生鏽的方式來做到這一點?
免責聲明:我知道這是一個常見的錯誤,它可能會在別處得到解答,但我又一次迷失了。我沒有找到相關的答案,也許我不知道如何搜索。對不起,如果它是重複的。
你不能用迭代器來做到這一點。我只是使用基於索引的迭代('for i in 0..elements.len()') –