我有大致有以下代碼:怪異借貸檢查失敗
let val = util::replace(&mut self.some_field[i], self.some_method());
它失敗,出現以下消息:
unrelated.rs:61:65: 61:70 error: cannot borrow `*self` as immutable because it is also borrowed as mutable
unrelated.rs:61 let val = util::replace(&mut self.some_field[i], self.some_method());
^~~~~
unrelated.rs:61:36: 61:62 note: second borrow of `*self` occurs here
unrelated.rs:61 let val = util::replace(&mut self.some_field[i], self.some_method());
^~~~~~~~~~~~~~~~~~~~~~~
我可以通過下面的代碼解決此:
let temp = self.some_method();
let val = util::replace(&mut self.some_field[i], temp);
但爲什麼會失敗?可變和不可變指針的範圍是截然不同的,它們是不同的表達式。它對我來說看起來像是一種錯誤,但我只是想確保我在這裏不會錯過任何東西。
非常感謝,這就是我的想法。我應該在bug追蹤器上搜索它。 –