Quelle est la différence entre iter() et into_iter() en Rust ?
Bonjour, collègues ! J'ai commencé à apprendre Rust et je suis confronté à une confusion lors du travail avec les itérateurs. Dans la documentation, je vois que les collections (par exemple, Vec) ont des méthodes iter() et into_iter(). À première vue, elles font la même chose — permettent de parcourir les éléments. Mais j'ai remarqué qu'après avoir utilisé into_iter(), le vecteur d'origine n'est plus accessible, alors qu'après iter(), il l'est. Pourquoi ?
Voici un exemple de code qui me trouble :
```rust
fn main() {
let numbers = vec![1, 2, 3];
// J'utilise iter()
for num in numbers.iter() {
println!("{}", num);
}
println!("Vecteur après iter() : {:?}", numbers); // Fonctionne !
// J'utilise into_iter()
let numbers2 = vec![4, 5, 6];
for num in numbers2.into_iter() {
println!("{}", num);
}
// println!("Vecteur après into_iter() : {:?}", numbers2); // Erreur ! numbers2 a été déplacé
}
```
Je comprends que into_iter() 'prend' la propriété d'une certaine manière, alors que iter() non. Mais quand utiliser quelle méthode ? Et si...
No answers yet.
Connectez-vous pour laisser une réponse