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()