Avatar ·

¿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.