C++ 中的std::copy
函数将一个迭代器指向的元素复制到另一个迭代器指向的元素上。C++ 中的一个重要方面std::copy
是,良好的实现通过使用std::memmove
if 迭代元素的类型是TriviallyCopyable
C++ 语言(一种实现Copy
Rust 特征的类型)进行优化。
std::copy
Rust 标准库中目前是否有与 C++ 等效或相似的内容?
Rust 中的迭代器和 C++ 中的迭代器是不同的东西。Rust 迭代器类似于 Java 和其他高级语言中的迭代器——它们不是类似指针的东西,它们是一种数据的“生产者”。因此,不可能优化它们以批量复制数据 - 对于某些迭代器来说可能根本没有意义,因为它可以例如返回无限的值序列。
我猜你能做的最接近的事情是这样的(对于Copy
类型;对于Clone
类型*t = *s
将成为*t = s.clone()
):
fn main() {
let source = [1i, 2, 3, 4, 5];
let mut target = [1i, 1, 1, 1, 1];
println!("source: {}", source.as_slice());
println!("target: {}", target.as_slice());
println!("-------");
for (s, t) in source.iter().zip(target.mut_iter()) {
*t = *s;
}
println!("source: {}", source.as_slice());
println!("target: {}", target.as_slice());
}