如何在 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 新手,感谢您的澄清。
impl<T: Clone> Clone for Option<T> {
#[inline]
fn clone(&self) -> Self {
match self {
Some(x) => Some(x.clone()),
None => None,
}
}
// ...
}
因此,如果 x
是 Option<Rc<T>>
,x.clone()
将简单地推迟到 Rc<T>
上的 Clone
实施。
假设我有一个 Rc 选项:
let x = Some(Rc::new(3));
如果我需要克隆,我可以这样做:
let y = Some(Rc::clone(&x.unwrap()));
不过好像还有捷径:
let y = x.clone();
这些选项之间有什么区别吗?或者他们在内部做同样的事情。 Rust 新手,感谢您的澄清。
impl<T: Clone> Clone for Option<T> {
#[inline]
fn clone(&self) -> Self {
match self {
Some(x) => Some(x.clone()),
None => None,
}
}
// ...
}
因此,如果 x
是 Option<Rc<T>>
,x.clone()
将简单地推迟到 Rc<T>
上的 Clone
实施。