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

问题描述 投票:0回答:1

说我有一个Rc选项:

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

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

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

但是似乎也有捷径:

let y = x.clone();

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

rust clone
1个回答
0
投票
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()将仅遵从Clone上的Rc<T>实现。

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