Avatar ·

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.