相关疑难解决方法(0)

借用指针错误递归遍历树

为了学习Rust,我正在实现一个AVL树/字典.为了插入一个新元素,我下到树中,直到找到一个可以插入它的节点.不幸的是,它抱怨了借用指针的几个问题,而且我在解密它们时遇到了麻烦.

我已经突出显示了哪里出现错误.

enum AVLTree<T, U> {
    Tree(T, U, Box<AVLTree<T, U>>, Box<AVLTree<T, U>>),
    Empty,
}

impl<T, U> AVLTree<T, U>
    where T: PartialOrd + PartialEq + Copy,
          U: Copy
{
    fn insert_element(&mut self, key: T, val: U) {
        let new_node = AVLTree::Tree(key, val, Box::new(AVLTree::Empty), Box::new(AVLTree::Empty));

        if let AVLTree::Empty = *self {
            *self = new_node;
            return;
        }

        let mut at = self;
        loop {
            match at {
                &mut AVLTree::Tree(key2, _, ref mut left, ref mut right) => {
                    //                      ^~~~~~~~~~~~
                    // error: cannot …
Run Code Online (Sandbox Code Playgroud)

rust

4
推荐指数
1
解决办法
579
查看次数

标签 统计

rust ×1