Avatar ·

Wie man einen Vektor in Rust in ein HashSet umwandelt: vollständige Anleitung

Hallo zusammen! Ich habe vor kurzem angefangen, Rust zu lernen, und bin auf ein Problem gestoßen. Ich habe einen Vektor mit Zahlen und möchte daraus ein HashSet erhalten, um Duplikate zu entfernen und schnell das Vorhandensein von Elementen zu überprüfen. In anderen Sprachen, wie zum Beispiel in Python, macht man das mit einer Zeile: `set(my_list)`. In Rust verstehe ich nicht, wie man das richtig macht. Hier ist mein Code: ```rust let numbers = vec![1, 2, 3, 2, 1, 4, 5]; // Ich möchte ein HashSet aus diesem Vektor erhalten let unique_numbers: HashSet = numbers.???; // Was soll ich hier schreiben? ``` Ich habe versucht, `numbers.into_iter().collect()` zu verwenden, aber der Compiler meckert, dass er den Typ nicht ableiten kann. Ich habe versucht, explizit `HashSet::from_iter(numbers)` anzugeben, aber das hat auch nicht funktioniert – es sagt, dass das Trait `FromIterator` nicht implementiert ist. Ich habe auch von der Methode `drain()` gehört, bin mir aber nicht sicher, ob das das Richtige ist. Könnt ihr mir bitte sagen, wie man richtig und effizient ein HashSet aus einem Vektor erstellt? Muss ich zusätzliche Traits importieren? Und was ist, wenn der Vektor sehr groß ist –