表面では、drain
とinto_iter
の両方が、同様のイテレータ、つまりコレクションの値を提供しているように見えます。しかし、彼らは異なっている:いつ `drain`対` into_iter`を使うべきですか?
fn main() {
let mut items1 = vec![0u8, 1, 2, 3, 4, 5, 6, 7, 8, 9];
let items2 = items1.clone();
println!("{:?}", items1.drain().count());
println!("{:?}", items2.into_iter().count());
println!("{:?}", items1);
// println!("{:?}", items2); Moved
}
drain
コレクションに&mut
を取り、コレクションはその後使用可能です。 into_iter
はコレクションを消費します。各イテレータの適切な用途は何ですか?