如何在 Rust 中克隆 Rc 的选项?

How to clone an Option of Rc in Rust?

假设我有一个 Rc 选项:

let x = Some(Rc::new(3));

如果我需要克隆,我可以这样做:

let y = Some(Rc::clone(&x.unwrap()));

不过好像还有捷径:

let y = x.clone();

这些选项之间有什么区别吗?或者他们在内部做同样的事情。 Rust 新手,感谢您的澄清。

有个generic implementation

impl<T: Clone> Clone for Option<T> {
    #[inline]
    fn clone(&self) -> Self {
        match self {
            Some(x) => Some(x.clone()),
            None => None,
        }
    }
    // ...
}

因此,如果 xOption<Rc<T>>x.clone() 将简单地推迟到 Rc<T> 上的 Clone 实施。