说我有一个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()
将仅遵从Clone
上的Rc<T>
实现。