gpt4 book ai didi

rust - to_owned() 什么时候不克隆?

转载 作者:行者123 更新时间:2023-12-03 11:26:31 24 4
gpt4 key购买 nike

docs for to_owned()状态:

Creates owned data from borrowed data, usually by cloning.


但是没有说明不会发生克隆的条件。 “通常”很模糊,出于性能原因,我试图删除 clone() 调用。
有人可以澄清吗?

最佳答案

to_owned方法是 ToOwned 的一部分trait,因此它不能保证实现 trait 的结构会克隆或不克隆实例 to_owned正在被召唤。 ToOwned 的全面实现trait 确实调用了 clone ,而且很少手动实现,这也是几乎每次调用 to_owned 的原因之一。将导致克隆。
此外,正如@Sven Marnach 所指出的,任何派生 Clone 的结构体接收一揽子实现并且无法实现自己的 ToOwned 实现,使调用毯子小鬼变得更加普遍。
请参阅下面的 blanket implementationToOwned

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);
}
}

关于rust - to_owned() 什么时候不克隆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63553892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com