Не может заимствовать неизменяемое заимствованное содержимое как изменяемое при реализации двоичного дерева с помощью Rc

Я хочу реализовать двоичное дерево. Мой основной язык - C ++, поэтому код, вероятно, не идиоматический Rust, а компилирует следующий код:

use std::rc::Rc;

struct Node {
    left: Option<Rc<Node>>,
    right: Option<Rc<Node>>,
    data: String,
}


impl Node {
    fn new(_data: String) -> Node {
        Node {
            data : _data.clone(),
            left : None,
            right : None,
        }
    }

    fn insert_left(&mut self, mut node: &Rc<Node>) {
        self.left = Some(node.clone());
    }

    fn insert_right(&mut self, mut node: &Rc<Node>) {
        self.left = Some(node.clone());
    }
}

fn main() {
    let mut root = Rc::new(Node::new(String::from("root")));
    let mut left = Rc::new(Node::new(String::from("left")));
    root.insert_left(&left);
}

У меня ошибка компиляции:

error: cannot borrow immutable borrowed content as mutable
  --> so.rs:31:9
   |
31 |         root.insert_left(&left);
   |         ^^^^

error: aborting due to previous error

Я не могу понять, что здесь не так. После нескольких повторений ошибок я обнаружил, что проблема заключается вinsert_left() функция: еслиself - это неизменяемая ссылка, затем она компилируется с закомментированным контентом, но неизменная ссылка не позволяет моему достичь цели.

Ответы на вопрос(1)

Ваш ответ на вопрос