Como implementar um iterador de referências mutáveis para os valores nas bordas direitas de uma Árvore de Pesquisa Binária?

Eu implementei uma árvore de pesquisa binária simples no Rust (seguindo o CIS 198, é ótimo) e, para aprender, eu estou fazendo iteradores que simplesmente passam pelas bordas corretas.

Não consegui implementar um iterador que fornece referências mutáveis. Eu tentei de várias maneiras, mas nenhuma foi aceita pelo compilador Rust. O código de que preciso de ajuda é o abaixo (enquanto eu fazia uma essência com o código completo aqui):

#[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
        })
    }
}

questionAnswers(2)

yourAnswerToTheQuestion