struct Parent<'a> {
inner: Option<&'a mut Object>
}
impl<'a> Parent<'a> {
fn new() -> Parent<'a> {
Parent {
inner: None,
}
}
fn bind(&mut self, obj: &'a mut Object) {
self.inner = Some(obj);
}
fn unbind(&mut self) {
self.inner = None;
}
}
struct Object {
inner: u32,
}
fn main() {
let mut obj = Object { inner: 0 };
let mut parent1 = Parent::new();
let mut parent2 = Parent::new();
parent1.bind(&mut obj);
parent1.unbind();
// parent2.bind(&mut obj);
//^error
}
結構Parent
場必須存儲Option
:暫時保持借來的對象
struct Parent {
inner: Option</* magic */>
}
有必要暫時阻止在fn main()
對象工作的可能性,直到調用.unbind()
有什麼問題在這裏:因爲一旦你綁定
obj
到parent2
,它不能被parent1
再使用? –@ T3H40在調用'.unbind()'之前,如何有必要暫時阻止在'fn main()'中使用該對象的可能性? – Heheyizi
這是不可能的。該對象綁定,直到您放棄parent1:http://is.gd/8alczd –