当前位置: 首页 > news >正文

Rust 学习笔记:关于 HashMap 的练习题

Rust 学习笔记:关于 HashMap 的练习题

  • Rust 学习笔记:关于 HashMap 的练习题
    • 以下代码能否通过编译?若能,输出是?
    • 以下代码能否通过编译?若能,输出是?

Rust 学习笔记:关于 HashMap 的练习题

以下代码能否通过编译?若能,输出是?

use std::collections::HashMap;fn main() {let mut h = HashMap::new();h.insert("k1", 0);let v1 = &h["k1"];h.insert("k2", 1);let v2 = &h["k2"];println!("{} {}", v1, v2);
}

不能通过编译。v1 持有了不可变引用导致第二次 insert 报错。

insert() 是对 HashMap 的可变借用,而 &[] 是对 HashMap 的不可变借用,如果两个借用的作用域有交叠的话就可能引发潜在的内存安全问题。

以下代码能否通过编译?若能,输出是?

use std::collections::HashMap;fn main() {let mut h: HashMap<char, Vec<usize>> = HashMap::new();for (i, c ) in "hello!".chars().enumerate() {h.entry(c).or_insert(Vec::new()).push(i);}let mut sum = 0;for i in h.get(&'l').unwrap() {sum += *i;}println!("{}", sum);
}

可以通过编译。输出 5。

相关文章:

  • PostGIS实现栅格数据入库-raster2pgsql
  • [Java][Leetcode simple] 13. 罗马数字转整数
  • SLAM定位常用地图对比示例
  • 系分论文《论系统需求分析方法及应用》
  • Redis深度解析:高性能内存数据库的核心原理与应用实践
  • Rhino 8 犀牛保姆级安装教程
  • 常见的实时通信技术(轮询、sse、websocket、webhooks)
  • 从辅助到协作:GitHub Copilot的进化之路
  • Vue 3.0中响应式依赖和更新
  • 天拓四方锂电池卷绕机 PLC 物联网解决方案
  • Maven 插件扩展点与自定义生命周期
  • p024基于Django的网上购物系统的设计与实现
  • 如何免费在线PDF转换成Excel
  • Netty的简单使用
  • 自己手写tomcat项目
  • C++数据结构 —— 平衡树Treap
  • Bellman - Ford 算法与 SPFA 算法求解最短路径问题 ——从零开始的图论讲解(4)
  • OTA与boot loader
  • 基于QT和FFmpeg实现自己的视频播放器FFMediaPlayer(一)——项目总览
  • 38-日语学习小程序
  • 特朗普再提“接管”加沙,要将其变为“自由区”
  • 山东市监局回应“盒马一批次‘无抗’鸡蛋抽检不合格后复检合格”:系生产商自行送检
  • 阿坝州委书记徐芝文已任四川省政府党组成员
  • 迪奥部分客户数据遭泄露,公司称正持续展开调查
  • 济南市委副秘书长吕英伟已任历下区领导
  • 广西壮族自治区党委政法委副书记李文博接受审查调查