Trên bề mặt, có vẻ như cả drain
và into_iter
cung cấp các trình lặp tương tự, cụ thể là trên các giá trị của bộ sưu tập. Tuy nhiên, họ là khác nhau:Khi nào tôi nên sử dụng `drain` vs` 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
mất một &mut
đến việc thu thập và bộ sưu tập có sẵn sau đó. into_iter
tiêu thụ bộ sưu tập. Sử dụng thích hợp cho mỗi trình lặp là gì?