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

Rust - 链式调用解引用的四种方式

fn main() {// 对于Copy类型// 三种等效写法// 1. map(|x| *x)// 2. map(|&x| x)// 3. copied(), 优先使用,结构清晰可读性高,一看就知道发生了复制// 这三种写法,都是在复制元素,如果是非Copy类型将发生所有权转移let arr1 = [1, 2, 3, 4, 5];let vec1: Vec<i32> = arr1.iter().map(|x| *x + 1).collect();let vec2: Vec<i32> = arr1.iter().map(|&x| x * 2).collect();let vec3: Vec<i32> = arr1.iter().copied().filter(|x| x & 1 == 1).collect(); println!("vec1 = {:?}", vec1);println!("vec2 = {:?}", vec2);println!("vec3 = {:?}", vec3);// String不是copy类型let string_arr = ["a".to_string(), "b".to_string(), "c".to_string()];// 编译不通过// let vec4: Vec<String> = str_arr.iter().copied().collect(); // cannot move out of `*x` which is behind a shared reference// move occurs because `*x` has type `String`, which does not implement the `Copy` trait// let vec4: Vec<String> = str_arr.iter().map(|x| *x).collect();// move occurs because `x` has type `String`, which does not implement the `Copy` // let vec4: Vec<String> = str_arr.iter().map(|&x| x).collect();let vec4: Vec<String> = string_arr.iter().cloned().collect();let vec4: Vec<String> = string_arr.iter().map(|x| x.clone()).collect();// cloned() 创建了全新的String对象,闭包参数x是局部变量,不是引用,拥有所有权// cannot return value referencing function parameter `x`// returns a value referencing data owned by the current function// let vec5: Vec<&str> = str_arr.iter().cloned().map(|x| x.as_str()).collect();let str_arr = ["a", "b", "c"];// 所有不可变引用 &T都实现了 Copytrait,无论 T是什么类型。let vec5: Vec<&str> = str_arr.iter().map(|&x| x).collect();}
http://www.jsqmd.com/news/177910/

相关文章:

  • 2024年SEVC SCI2区,双种群协同遗传算法+AGV柔性作业车间调度,深度解析+性能实测
  • 8款AI论文写作辅助工具对比:智能降重与高效创作效果评测
  • 手机变电脑摄像头!DroidCamX全平台使用指南与实战教程 - 教程
  • 【如何实现有效社交】转载
  • 数据目录在大数据架构中的核心作用解析
  • 轴向磁场轮毂电机的结构设计 电动汽车已经逐渐使用轮毂电机来代替发动机,这可以很好的减少油耗及尾...
  • 如何让你的语音助手有眼力见——Turn Detection 的 5 种解法丨Voice Agent 学习笔记
  • 深度测评9个AI论文工具,专科生轻松搞定毕业论文!
  • 亲测好用8个AI论文软件,专科生毕业论文轻松搞定!
  • 从理论到界面:六维坐标系与三值九层立体结构的工具化路径
  • 德诺超声波焊接机怎么选购才保证品质与性价比?
  • PotPlayer采集卡选麦克风会导致黑屏及音频修复方案
  • 人工智能辅助识别价值陷阱
  • 前沿技术!AI 应用架构师在 AI 安全漏洞检测系统的新突破
  • 三种主流接收机架构(超外差、零中频、射频直采)对比及发展趋势浅析
  • AI智能体在识别经济护城河中的作用
  • 高效创作与智能降重:8款AI论文写作工具功能评测
  • 8款AI论文辅助工具测评:智能降重与高效创作能力对比
  • 集体好奇心在教育领域的应用
  • 大小不足1M,干翻Windows!
  • springboot基于 Web的图书借阅管理信息系统
  • Jenkins流水线配置的两种方式
  • 高效创作与智能降重功能:8款AI论文写作工具测评分析
  • IOS上收费的软件,Android上免费!
  • 智能体系统与AUC评估:从二元决策到连续评分
  • 智能降重与高效创作功能对比:8款AI论文写作工具评测
  • Vue 路由的庖丁解牛
  • A.每日一题——1970. 你能穿过矩阵的最后一天
  • 8款AI论文写作软件评测:智能降重与高效创作功能对比
  • 数字验证(一):谈谈设计验证的成本