¿Cómo implementar un iterador de referencias mutables a los valores en los bordes derechos de un árbol de búsqueda binaria?

Implementé un árbol de búsqueda binaria simple en Rust (siguiendo CIS 198, es genial), y para aprender estoy haciendo iteradores que solo se ejecutan en los bordes derechos.

No pude implementar un iterador que proporcione referencias mutables. Lo intenté de muchas maneras, pero ninguna fue aceptada por el compilador Rust. El código que necesito ayuda es el siguiente (mientras hice una idea general con el código completo aquí):

#[derive(Debug)]
pub struct Tree<T>(Option<Box<Node<T>>>);

#[derive(Debug)]
pub struct Node<T> {
    elem: T,
    left: Tree<T>,
    right: Tree<T>,
}

// MUTABLE BORROW STRUCT
pub struct IterMut<'a, T: 'a> {
    next: &'a mut Tree<T>,
}

// MUTABLE BORROW NEXT (I'M STUCK HERE, NOTHING WORKS)
impl<'a, T> Iterator for IterMut<'a, T> {
    type Item = &'a mut T;
    fn next(&mut self) -> Option<Self::Item> {
        // 1 try: cannot infer lifetime
        self.next.0.as_mut().map(|node| {
            self.next = &mut node.right;
            &mut node.elem
        })

        // 2 try: node.right, node.elem does not live long enough
        self.next.0.take().map(|node| {
            self.next = &mut node.right;
            &mut node.elem
        })
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta