¿Cuál es la diferencia entre iter() y into_iter() en Rust?
¡Hola, colegas! Empecé a estudiar Rust y me encontré con confusión al trabajar con iteradores. En la documentación veo que las colecciones (por ejemplo, Vec) tienen métodos iter() y into_iter(). A primera vista hacen lo mismo: permiten iterar sobre elementos. Pero noté que después de usar into_iter(), el vector original ya no está disponible, mientras que después de iter() sí lo está. ¿Por qué?
Aquí hay un ejemplo de código que me confunde:
```rust
fn main() {
let numbers = vec![1, 2, 3];
// Uso iter()
for num in numbers.iter() {
println!("{}", num);
}
println!("Vector después de iter(): {:?}", numbers); // ¡Funciona!
// Uso into_iter()
let numbers2 = vec![4, 5, 6];
for num in numbers2.into_iter() {
println!("{}", num);
}
// println!("Vector después de into_iter(): {:?}", numbers2); // ¡Error! numbers2 fue movido
}
```
Entiendo que into_iter() de alguna manera "toma" la propiedad, mientras que iter() no. Pero ¿cuándo usar cada método? Y si