На странице 327 раздела Programming Rust вы можете найти следующее утверждение
Однако, в отличие от метода
into_iter()
, который берет коллекцию по значению и потребляет ее,drain
просто заимствует изменяемые ссылки на коллекцию, а когда итератор удаляется, он удаляет все оставшиеся элементов из коллекции и оставляет его пустым.
Я смущен тем, что это означает, что он говорит, что удаляет все оставшиеся элементы из коллекции? Я вижу с помощью этого кода, когда итератор отбрасывается, оставшиеся элементы из a
все еще там,
fn main() {
let mut a = vec![1, 2, 3, 4, 5];
{
let b: Vec<i32> = a.drain(0..3).collect();
}
println!("Hello, world! {:?}", a);
}
Возможно, меня смущает только формулировка. Есть ли что-то еще в этом?