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