Zak*_*Zak 3 iterator clone copy rust
我试图弄清楚Rust 特征上copied()和cloned()方法之间的区别Iterator。查看上的文档Clone,我可以看到...
copied()
cloned()
Iterator
Clone
与Copy的不同之处在于,Copy是隐式的并且非常便宜,而Clone始终是显式的,可能昂贵也可能不昂贵。[...]由于“复制”比“复制”更笼统,因此您也可以自动使“复制”成为“复制”。
...但是对于迭代器来说,这两种方法都是显式的,所以有什么意义copied()?我是否应该一直使用cloned()它,因为它在更一般的情况下会起作用?
Pet*_*all 6
我是否应该一直使用cloned(),因为它在更一般的情况下会起作用?
通常,Rust优化器将能够确定可以用更快的副本替换克隆。但是,这不能保证,因此copied()请尽可能使用,以确保最终得到最快的二进制文件。
Zak*_*Zak 6
我设法找到(感谢Peter!)这个拉取请求,该请求解释了copied()除了cloned()... 之外添加的原始原因。
复制的目的是避免在执行代码重构后意外克隆迭代器元素,从而导致结构不再被复制。这是一个相对常见的模式,可以通过调用rg --pcre2 '[.]map[(][|](?:(\w+)[|] [*]\1|&(\w+)[|] \2)[)]'Rust主存储库看到。此外,克隆的许多用途实际上只是想简单地复制,而将某些内容更改为不再可复制可能会引起明显的性能损失。
rg --pcre2 '[.]map[(][|](?:(\w+)[|] [*]\1|&(\w+)[|] \2)[)]'
归档时间:
6 年 前
查看次数:
113 次
最近记录: