Wie kann ich ein update ein Wert in einer veränderlichen HashMap?

Hier ist, was ich versuche zu tun:

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;
    //I expect my_map becomes {"b": 3, "a": 11}
}

Aber das wirft einen Fehler:

Rust 2015

error[E0594]: cannot assign to immutable indexed content
 --> src/main.rs:8:5
  |
8 |     my_map["a"] += 10;
  |     ^^^^^^^^^^^^^^^^^ cannot borrow as mutable
  |
  = help: trait `IndexMut` is required to modify indexed content, but it is not implemented for `std::collections::HashMap<&str, i32>`

Rost 2018

error[E0594]: cannot assign to data in a `&` reference
 --> src/main.rs:8:5
  |
8 |     my_map["a"] += 10;
  |     ^^^^^^^^^^^^^^^^^ cannot assign

Ich nicht wirklich verstehen, was das bedeutet, da ich aus der HashMap verändert werden. Wenn ich versuche zu aktualisieren, ein element in einem vector, bekomme ich das erwartete Ergebnis:

let mut my_vec = vec![1, 2, 3];

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

Was ist anders an HashMap, dass ich immer den oben genannten Fehler? Gibt es eine Möglichkeit, um einen Wert zu aktualisieren?

InformationsquelleAutor Akavall | 2015-05-23
Schreibe einen Kommentar