Búsqueda e inserción eficientes en HashMap en Rust: ¿cómo evitar el doble hash?
¡Hola, colegas! Estoy empezando a aprender Rust y me encontré con una tarea típica: necesito actualizar un valor en HashMap si la clave existe, o insertar un nuevo par si la clave no existe. El problema es que lo hago en dos pasos: primero verifico la existencia de la clave con contains_key(), y luego inserto o modifico el valor. Pero, según entiendo, esto provoca un doble hash: una vez al verificar y otra al insertar. Parece ineficiente, especialmente para diccionarios grandes.
Aquí está mi código actual:
use std::collections::HashMap;
fn update_or_insert(map: &mut HashMap<String, i32>, key: &str, value: i32) {
if map.contains_key(key) {
// Actualizamos el valor existente
if let Some(val) = map.get_mut(key) {
*val = value;
}
} else {
// Insertamos uno nuevo
map.insert(key.to_string(), value);
}
}
Este código funciona, pero me preocupa que contains_ke