专栏首页Rust语言学习交流【群友记录】记录写rust遇到一个坑

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

直接看demo

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,大佬们会看不上。不是的,大佬们也会有很多细节的地方一时回答不上来。把你的经验分享出来,大家看到至少心里有个印象。每个人的一点经验对社区整体就是提升,这是一个积累的过程。

本文分享自微信公众号 - Rust语言学习交流(rust-china),作者:243011068

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Rust日报】2020-05-24 Rash, Rocket, Mun, Casbin

    Rash是一种受Ansible工具启发的Declarative Shell脚本语言。

    MikeLoveRust
  • 【Rust问答】要如何实现一个全局变量的初始化(单例)

    Mutex::new(None); static 变量中又不允许出现 非 const fn,怎么能实现这个需求呢

    MikeLoveRust
  • 【Rust日报】2020-02-09 image.rs 发布了0.23版本

    Rusoto 是一个 Rust 实现的 AWS SDK,目前在 beta 版本 v0.43.0-beta.1 中兼容了std::future::Future.

    MikeLoveRust
  • Dubbo源码学习-服务发布

    我们一般会把服务的信息放在spring的配置文件中,供dubbo解析调用。那么这些配置文件是怎么起作用的呢?

    大王叫下
  • Python的is None vs ==None

    想要弄清楚is None和==None的区别,首先要清楚==和is的区别。==和is的区别如下:

    Tyan
  • DropDownList下拉框多选

    最近弄完个项目、项目需要支持多选功能、找了很多例子没找到合适的,最后自己开发了个控件:

    跟着阿笨一起玩NET
  • CSharp每日代码示例:使用iTextSharp创建PDF文件

    程序你好
  • GUID_COMP and GUID_COMPC - IBASE table

    ticket 1548725 2011 [Sorting of Ibase compments suppress structure]. The correct...

    Jerry Wang
  • openvswitch配置端口绑定

    snda-intel-lab-2960s-250# sh int port-channel 1

    力哥聊运维与云计算
  • sql sever模糊查询和聚合函数

    使用is null 的时候 要确保 查询的列 可以为空! null:   01.标识  空值   02.不是0,也不是空串""   03.只能出现在定义 允许...

    房上的猫

扫码关注云+社区

领取腾讯云代金券