¿Cuál es la diferencia entre iter() y into_iter() en Rust?
¡Hola! Acabo de empezar a aprender Rust y estoy tratando de entender los iteradores. Leí varios artículos, pero no logro comprender la diferencia entre los métodos `iter()` y `into_iter()`.
Escribí este código:
```rust
let numbers = vec![1, 2, 3, 4, 5];
// Intento 1: iter()
for num in numbers.iter() {
println!("{}", num);
}
println!("Después de iter(): {:?}", numbers); // Funciona
// Intento 2: into_iter()
for num in numbers.into_iter() {
println!("{}", num);
}
println!("Después de into_iter(): {:?}", numbers); // ¡Error!
```
La primera parte del código funciona bien, puedo usar `numbers` después del bucle. Pero la segunda parte da un error de compilación: `value used here after move`.
He leído que `into_iter()` consume la colección, pero no entiendo qué significa eso en la práctica. ¿Por qué no puedo usar el vector después de `into_iter()`? ¿Y en qué situaciones se debe aplicar cada uno de estos métodos?
También he oído hablar del método `iter_mut()`, pero aún no lo entiendo. Agradecería una explicación detallada.