Quelle est la différence entre iter() et into_iter() en Rust ?
Salut ! Je viens de commencer à apprendre Rust et j'essaie de comprendre les itérateurs. J'ai lu plusieurs articles, mais je n'arrive pas à saisir la différence entre les méthodes `iter()` et `into_iter()`.
J'ai écrit ce code :
```rust
let numbers = vec![1, 2, 3, 4, 5];
// Tentative 1 : iter()
for num in numbers.iter() {
println!("{}", num);
}
println!("Après iter() : {:?}", numbers); // Fonctionne
// Tentative 2 : into_iter()
for num in numbers.into_iter() {
println!("{}", num);
}
println!("Après into_iter() : {:?}", numbers); // Erreur !
```
La première partie du code fonctionne normalement, je peux utiliser `numbers` après la boucle. Mais la deuxième partie génère une erreur de compilation : `value used here after move`.
J'ai lu que `into_iter()` consomme la collection, mais je ne comprends pas ce que cela signifie en pratique. Pourquoi ne puis-je pas utiliser le vecteur après `into_iter()` ? Et dans quelles situations faut-il appliquer chacune de ces méthodes ?
J'ai aussi entendu parler de la méthode `iter_mut()`, mais je ne l'ai pas encore comprise. Je serais reconnaissant pour une explication détaillée.
No answers yet.
Connectez-vous pour laisser une réponse