to_owned()状态的文档:
从借用的数据创建拥有的数据,通常是通过克隆。
但是没有说明不会发生克隆的条件。“通常”很模糊,出于性能原因,我试图删除 clone() 调用。
有人可以澄清吗?
该to_owned方法是特征的一部分ToOwned,因此它不能保证实现该特征的结构将克隆或不克隆to_owned正在调用的实例。该ToOwned特征的总体实现确实调用了,并且很少手动实现,这是几乎每次调用都会导致克隆的clone原因之一。to_owned
此外,正如 @Sven Marnach 所指出的,任何派生的结构Clone都会接收毯子实现,并且无法实现其自己的 实现ToOwned,这使得对毯子 imp 的调用更加常见。
请参阅下面的总体实施ToOwned
impl<T> ToOwned for T
where
T: Clone,
{
type Owned = T;
fn to_owned(&self) -> T {
self.clone()
}
fn clone_into(&self, target: &mut T) {
target.clone_from(self);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
564 次 |
| 最近记录: |