Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将HashMap传递给Rust中的函数_Hashmap_Rust - Fatal编程技术网

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

如何将HashMap传递给Rust中的函数,hashmap,rust,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!("{:

有人能解释为什么下面的代码不能编译吗

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"));
}

问题是,您将一个可变引用传递给一个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"));
}
使用std::collections::HashMap;
fn添加(h:&mut哈希映射){
h、 插入(“foo”、“bar”);
}
fn main(){
让mut h:HashMap=HashMap::new();
添加(&mut h);
println!(“{:?}”,h.get(“foo”);
}
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"));
}