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);
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta