Avatar ·

Was ist der Unterschied zwischen iter() und into_iter() in Rust?

Hallo Kollegen! Ich habe angefangen, Rust zu lernen und bin auf Verwirrung bei der Arbeit mit Iteratoren gestoßen. In der Dokumentation sehe ich, dass Collections (z.B. Vec) Methoden wie iter() und into_iter() haben. Auf den ersten Blick machen sie dasselbe – sie ermöglichen das Durchlaufen von Elementen. Aber mir ist aufgefallen, dass der ursprüngliche Vektor nach der Verwendung von into_iter() nicht mehr verfügbar ist, während er nach iter() noch verfügbar ist. Warum ist das so?\n\nHier ist ein Beispielcode, der mich verwirrt:\n\n```rust\nfn main() {\n let numbers = vec![1, 2, 3];\n \n // Verwende iter()\n for num in numbers.iter() {\n println!("{}", num);\n }\n println!("Vektor nach iter(): {:?}", numbers); // Funktioniert!\n\n // Verwende into_iter()\n let numbers2 = vec![4, 5, 6];\n for num in numbers2.into_iter() {\n println!("{}", num);\n }\n // print