如何将HashMap传递给Rust中的函数

时间:2016-08-04 07:29:10

标签: hashmap rust

有人能解释为什么以下代码无法编译?

use std::collections::HashMap;

fn add(mut h: &HashMap<&str, &str>) {
    h.insert("foo", "bar");
}

fn main() {
    let mut h: HashMap<&str, &str> = HashMap::new();
    add(&h);
    println!("{:?}", h.get("foo"));
}

这就是rustc告诉我的事情

hashtest.rs:4:5: 4:6 error: cannot borrow immutable borrowed content `*h` as mutable
hashtest.rs:4     h.insert("foo", "bar");
                  ^

1 个答案:

答案 0 :(得分:2)

问题是您将可变引用传递给HashMap(即引用可以更改为指向另一个HashMap),而不是引用可变引用 HashMap(即HashMap可以更改)。

这是一个正确的代码:

use std::collections::HashMap;

fn add(h: &mut HashMap<&str, &str>) {
    h.insert("foo", "bar");
}

fn main() {
    let mut h: HashMap<&str, &str> = HashMap::new();
    add(&mut h);
    println!("{:?}", h.get("foo"));
}