Como realizar busca e inserção eficientes em HashMap no Rust?
Olá, colegas! Sou novo em Rust e encontrei um problema ao trabalhar com `HashMap`. Preciso implementar um dicionário de frequências: ler linhas de um arquivo de texto, contar o número de ocorrências de cada palavra e exibir o top-10. Em outras linguagens (como Python), eu simplesmente fazia `dict[word] = dict.get(word, 0) + 1`. Mas em Rust é mais complicado.
Aqui está meu código, que funciona, mas parece terrivelmente ineficiente:
```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);
}
```
Problemas:
1. Eu faço duas chamadas ao `HashMap` para cada palavra: primeiro verifico `contains_key`, depois `get`, depois `insert`. Isso parece desperdiçador