我有一个借用的函数,HashMap
我需要通过键访问值。为什么键和值是通过引用而不是值来获取的?
我的简化代码:
fn print_found_so(ids: &Vec<i32>, file_ids: &HashMap<u16, String>) {
for pos in ids {
let whatever: u16 = *pos as u16;
let last_string: &String = file_ids.get(&whatever).unwrap();
println!("found: {:?}", last_string);
}
}
为什么我必须指定密钥作为参考,即,
file_ids.get(&whatever).unwrap()
而不是file_ids.get(whatever).unwrap()
?据我了解,
last_string
必须是 type&String
,意思是借来的 string,因为拥有的集合是借来的。那正确吗?与上述观点类似,我是否正确假设
pos
is 是类型&u16
,因为它从 中获取借来的值ids
?