HashMap插入数据前后,value的地址打印不同?
use std::collections::HashMap;
fn main() {
let mut scores: HashMap<&str, String> = HashMap::new();
let key: &str = "qiul";
let value: String = String::from("good");
println!("{:p}", &value);
scores.insert(key, value);
let x = scores.get("qiul");
if let Some(s) = x {
println!("{:p}", s);
}
}
这里两次地址打印不同,我个人觉得是不是HashMap会复制一份传入的value值,并且存储的是复制的那一份。但是我在网上没有找到明确的答案,问了chatgpt也没有明确的回答,希望有了解的大佬能够说一下为什么这里两次地址打印不同。
关于 LearnKu
因为 所有权转移了就是不同的 “栈”了, 输出的都是 “栈” 地址,所以是不同的了。要输出 “堆” 中存储的 “字符串” 地址 调用
xxxxx.as_ptr()play.rust-lang.org/?version=stable...