C++のstd::copy
関数は、ある反復子が指す要素を別の反復子が指す要素の上にコピーします。in C++の重要な側面の 1 つは、反復される要素の型がC++ 言語 ( Rust 言語でトレイトを実装する型)である場合にstd::copy
使用することによって、適切な実装が最適化されることです。std::memmove
TriviallyCopyable
Copy
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());
}