Rust 无法确定借用值的类型

问题描述 投票:0回答:1
type NodePointer<T> = Option<Rc<RefCell<Node<T>>>>;

#[derive(Debug)]
struct Node<T> {
    val: T,
    next: NodePointer<T>
}

pub struct LinkedList<T> {
    head: NodePointer<T>,
    tail: NodePointer<T>,
    length: u32
}

impl <T: Display> Display for LinkedList<T> {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut current = self.head.clone();
        
        while let Some(node_rc) = current {
            let node = node_rc.borrow_mut();
            write!(f, "{} ", node.val)?;
            current = node.next.clone();
        }
        Ok(())
    }
}

我试图制作一个 LinkedList 来学习 Rust,但在这里我陷入了一个相当奇怪的错误。在

fmt
函数中使用
node_rc.borrow()
给我

consider giving `node` an explicit type, where the type for type parameter `Borrowed` is specified: `: &Borrowed`

但是使用

borrow_mut
而不是
borrow
不会导致同样的错误,为什么?

rust ownership interior-mutability
1个回答
0
投票

我找到了一个解决方案,这是因为 rust-analyzer 正在从

borrow::Borrow
而不是
cell::RefCell
导入借用。这不是与 Rust 工作方式相关的错误。只是错误的导入。删除使用
std::borrow::Borrow
解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.