C ++中的std::copy
函数将一个迭代器指向的元素复制到另一个迭代器指向的元素上。 C ++中std::copy
的一个重要方面是,如果C ++中迭代元素的类型为std::memmove
,则使用TriviallyCopyable
优化实现优化(实现Copy
的类型Rust的特质说话。)
目前在Rust标准库中是否存在与C ++ std::copy
等效或类似的内容?
答案 0 :(得分:1)
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());
}