Verificador de préstamos en relación padre-hijo
Tengo el siguiente código que produce el mensaje de error marcado en sus comentarios. Creo que entiendo el mensaje: quiero pedir prestado a los padres dos veces: una para encontrar a su hijo y otra como argumento para el hijo (y las palabras mutables / inmutables en el error no son relevantes). Tengo que demostrar queChild
no desaparece cuando se modificaParent
. Pero no sé cómo hacer esto. yo podríaRc<Child>
todo menos eso parece un desperdicio, así que espero que agregar algunas vidas sirva.
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);
}