Wie man in Rust effizient in HashMap sucht und einfügt?
Hallo Kollegen! Ich bin neu in Rust und habe ein Problem mit `HashMap`. Ich muss ein Häufigkeitswörterbuch implementieren: Zeilen aus einer Textdatei lesen, die Anzahl der Vorkommen jedes Wortes zählen und die Top 10 ausgeben. In anderen Sprachen (z.B. Python) habe ich einfach `dict[word] = dict.get(word, 0) + 1` gemacht. Aber in Rust ist es komplizierter.
Hier ist mein Code, der funktioniert, aber schrecklich ineffizient erscheint:
```rust
use std::collections::HashMap;
fn main() {
let text = "hello world hello rust rust rust";
let mut map: HashMap<&str, u32> = HashMap::new();
for word in text.split_whitespace() {
if map.contains_key(word) {
let count = map.get(word).unwrap();
map.insert(word, count + 1);
} else {
map.insert(word, 1);
}
}
println!("{:?}", map);
}
```
Probleme:
1. Ich mache zwei Zugriffe auf `HashMap` für jedes Wort: zuerst prüfe ich `contains_key`, dann `get`, dann `insert`. Das wirkt verschwenderisch.