Займитесь проверкой на родительско-дочерних отношениях
У меня есть код ниже, производящий сообщение об ошибке, отмеченное в его комментариях. Мне кажется, я понимаю сообщение: я хочу заимствовать родительский объект два раза: один раз для нахождения его дочернего элемента и один раз в качестве аргумента для дочернего элемента (и изменяемые / неизменяемые слова в ошибке не имеют значения). Я должен доказать этоChild
не исчезает при измененииParent
, Но я не знаю, как это сделать. Я мог быRc<Child>
все, кроме швов, расточительно, поэтому я надеюсь, что добавление нескольких жизней поможет.
struct Parent {
used: i32,
child: Child,
}
struct Child {
dummy: i32,
}
impl Child {
fn use_parent(&mut self, parent: &mut Parent) {
// use both child and parent
parent.used += self.dummy;
self.dummy += 1;
}
}
fn main() {
let parent = Parent {
used: 0,
child: Child {
dummy: 1
}
};
//Error: cannot borrow immutable local variable `parent` as mutable
parent.child.use_parent(&mut parent);
}