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也没有明确的回答,希望有了解的大佬能够说一下为什么这里两次地址打印不同。

讨论数量: 2

因为 所有权转移了就是不同的 “栈”了, 输出的都是 “栈” 地址,所以是不同的了。要输出 “堆” 中存储的 “字符串” 地址 调用 xxxxx.as_ptr() play.rust-lang.org/?version=stable...

8个月前 评论
qiutianshuoaini (楼主) 8个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!