前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【群友记录】记录写rust遇到一个坑

【群友记录】记录写rust遇到一个坑

作者头像
MikeLoveRust
发布2020-04-15 16:57:03
3630
发布2020-04-15 16:57:03
举报

直接看demo

代码语言:javascript
复制
let mut map = HashMap::new();
let mut is_new = false;

map.entry(1).or_insert({
    is_new = true;
    1
});

if is_new {
    println!("is_new");
}

目的是想在map新增key的时候做一些处理,看起来很美好,编译通过了,但是多了警告 warning: value assigned to is_new is never read --> src\main.rs:133:13

纳尼?is_new明明用了啊而且控制台还打印了,当时心里还暗想难道是rust的bug?,带着疑问我在群里问了下,经过讨论最后“大头矮子”还原了真相,原来or_insert传的是值,并不是闭包,也就是我传了个表达式进去,is_new无论什么情况都会执行等于true,if is_new 就等同于if true 所以rust编译器认为is_new根本不需要才会有此警告,不得不说rust编译器真是强大,要是没这个警告我就掉坑里了,哈哈。最后此问题解决方案可以调用or_insert_with。完美解决。

----

小编后记:这种记录很有价值,任何人都可以给本号或者 rust.cc 投稿,不要觉得问题很 stupid,大佬们会看不上。不是的,大佬们也会有很多细节的地方一时回答不上来。把你的经验分享出来,大家看到至少心里有个印象。每个人的一点经验对社区整体就是提升,这是一个积累的过程。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档