hashmap rust

Actualizar valor en HashMap mutable



rust (1)

La indexación de forma inmutable y la indexación de forma inmutable se proporcionan mediante dos rasgos diferentes: Index y IndexMut , respectivamente.

Actualmente, HashMap no implementa IndexMut , mientras que Vec hace .

La confirmación que eliminó los estados de implementación de IndexMut HashMap :

Este compromiso elimina las implementaciones de IndexMut en HashMap y BTreeMap, con el fin de probar la API en el futuro contra la eventual inclusión de un rasgo IndexSet.

Tengo entendido que un rasgo hipotético de IndexSet le permitiría asignar valores completamente nuevos a un HashMap , y no solo leer o mutar entradas existentes:

let mut map = HashMap::new(); map["key"] = "value";

Por ahora, puedes usar get_mut :

*my_map.get_mut("a").unwrap() += 10;

O la entry API:

*my_map.entry("a").or_insert(42) += 10;

Esto es lo que estoy tratando de hacer:

use std::collections::HashMap; fn main() { let mut my_map = HashMap::new(); my_map.insert("a", 1); my_map.insert("b", 3); my_map["a"] += 10; // my expected outputs is my_map becomes {"b": 3, "a": 11} }

Plantea el siguiente error:

error: cannot assign to immutable indexed content --> src/main.rs:8:5 | 8 | my_map["a"] += 10; | ^^^^^^^^^^^^^^^^^ cannot borrow as mutable

Realmente no entiendo lo que eso significa, ya que hice el HashMap mutable. Cuando intento actualizar un elemento en un vector , obtengo el resultado esperado:

let mut my_vec = vec!{1,2,3}; my_vec[0] += 10; println!{"{:?}", my_vec}; // [11, 2, 3]

¿Qué tiene de diferente el HashMap que recibo el error anterior? ¿Hay alguna manera de actualizar un valor?