1

C++ 中的std::copy函数将一个迭代器指向的元素复制到另一个迭代器指向的元素上。C++ 中的一个重要方面std::copy是,良好的实现通过使用std::memmoveif 迭代元素的类型是TriviallyCopyableC++ 语言(一种实现CopyRust 特征的类型)进行优化。

std::copyRust 标准库中目前是否有与 C++ 等效或相似的内容?

4

1 回答 1

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());
}
于 2014-09-13T11:02:05.353 回答