Recherche et insertion efficaces dans HashMap en Rust : comment éviter le double hachage ?
Bonjour, collègues ! Je commence à apprendre Rust et j'ai rencontré une tâche typique : mettre à jour une valeur dans HashMap si la clé existe, ou insérer une nouvelle paire si la clé n'existe pas. Le problème est que je le fais en deux étapes : d'abord je vérifie la présence de la clé avec contains_key(), puis j'insère ou modifie la valeur. Mais, comme je le comprends, cela entraîne un double hachage — une fois lors de la vérification et une seconde fois lors de l'insertion. Cela semble inefficace, surtout pour de grands dictionnaires.
Voici mon code actuel :
use std::collections::HashMap;
fn update_or_insert(map: &mut HashMap<String, i32>, key: &str, value: i32) {
if map.contains_key(key) {
// Mettre à jour la valeur existante
if let Some(val) = map.get_mut(key) {
*val = value;
}
} else {
// Insérer une nouvelle
map.insert(key.to_string(), value);
}
}
Ce code fonctionne, mais je suis préoccupé par le fait que contains_ke