小编Ske*_*ric的帖子

Rust - “while let”语句中的双重可变借用

抱歉,如果这是一个愚蠢的问题,我对 Rust 还比较陌生,只是无法破解这个双重可变借用错误。我正在尝试创建一个 AVL 树方法,该方法可以找到可以插入新节点的适当位置。我不明白我需要做什么才能放弃第一笔借款。

我试图在没有 RC、RefCell 或 Unsafe 的情况下做到这一点 - 尽管我越来越不清楚我的方法是否可行。

Rust 游乐场链接

    pub fn find_pos(&mut self, key: &K) -> &mut Link<K, V>{
        let mut current = &mut self.root;
        while let Some(node) = current.as_mut() {  // <- first mutable borrow
            match node.key.cmp(&key) {
                Ordering::Equal => break,
                Ordering::Greater => {
                    current = &mut node.right;
                },
                Ordering::Less => {
                    current = &mut node.left;
                },
            }
        };
        current  // <- second mutable borrow
    }
Run Code Online (Sandbox Code Playgroud)

我也尝试过与此处描述的解决方案类似的方法,但没有成功。

    pub fn find_pos(&mut self, key: …
Run Code Online (Sandbox Code Playgroud)

avl-tree mutability rust borrow-checker

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

标签 统计

avl-tree ×1

borrow-checker ×1

mutability ×1

rust ×1