試圖編譯這個節目,我陷在借檢查:易變借似乎活得比其範圍
use std::collections::BTreeMap;
type Object<'a> = BTreeMap<&'a str, i32>;
struct Root<'a>(Object<'a>);
struct Sub<'a>(&'a mut Object<'a>, &'a str);
impl<'a> Root<'a> {
fn borrow_mut(&'a mut self, data: &'a str) -> Sub<'a> {
Sub(&mut self.0, data)
}
fn borrow(&self) {
println!("{:?}", self.0);
}
}
fn main() {
let mut me = Root(Object::new());
{
me.borrow_mut("data!");
}
me.borrow();
}
我得到:
error: cannot borrow `me` as immutable because it is also borrowed as mutable
它看起來像可變借應該me.borrow()
之前結束但檢查員堅持認爲它在main
結束時結束。
要快速解釋什麼,我試圖完成:
- 讓家長結構來保存數據
- 使數據的子類別,並將其存儲在父
- 使用此建設者風格模式來做的MongoDB查詢
以上的防鏽圍欄代碼:http://is.gd/mLbBFG
呃?現在這是意想不到的,可變借款應該是有限的。哦,除非你的一生影響它...... –