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

Rust - for in 遍历数组的几种方式

fn main() {let arr = [1, 2, 3, 4, 5];// 不获取所有权// for item in &arr 与 for item in arr.iter() 等价for item in &arr{println!("{} = {}", item, *item); // item 的类型是&i32}for item in arr.iter() {println!("{} = {}", item, *item); // item 的类型是&i32}let arr2 = ["a".to_string(), "a".to_string(), "a".to_string()];// 获取所有权// for item in arr 和 for item in arr.into_iter等价for item in arr2 {println!("{}", item); // item 的类型是i32}// borrow of moved value: `arr2`// value borrowed here after mov// println!("arr2.len = {}", arr2.len());  // arr2的所有权发生了转移// println!("{:?}", arr2.last()); let arr3 = [1, 2, 3, 4, 5];for item in arr3.into_iter() {println!("{}", item); // item 的类型是i32}println!("arr3.len = {}", arr3.len());  // i32实现了copy类型,所有在迭代时是复制而不是所有权转移println!("{:?}", arr3.last());// 修改数组元素,但不获取所有权// for item in &mut arr3 和 for item in arr3.iter_mut 等价let mut arr3 = [1, 2, 3, 4, 5];for item in &mut arr3 {*item *= 2; // item的类型是&mut i32}println!("{:?}", arr3); // 2, 4, 6, 8, 10for item in arr3.iter_mut() {*item /= 2;}println!("{:?}", arr3); // 1, 2, 3, 4, 5// 获取引用的所有权// for item in (&arr).into_iter 实际是for item in &arr// 明确将引用转换为迭代器// 获取引用的所有权,而不是数组的所有权// 是 for item in &arr的底层展开形式let mut arr4 = [1, 2, 3, 4, 5];for item in (&mut arr4).into_iter() {*item *= 3; // item的类型是&mut i32}println!("{:?}", arr4); let arr5 = [String::from("abc"), String::from("def")];for item in (&arr5).into_iter() {println!("{}", item); // item的类型是&String}println!("{:?}", arr5);
}
http://www.rkmt.cn/news/193523.html

相关文章:

  • 为什么你的WASM代码一脱即溃?C语言混淆的3个致命盲区
  • C++泛型革命(从C11到C17类型安全演进之路)
  • YOLOFuse发票申请流程:企业报销必备
  • 写真摄影小软件:美,从不止于定格
  • C++学习笔记 46 单例模式
  • 基于MATLAB的改进RRT路径规划:双向RRT与Dijkstra的融合
  • YOLOFuse余额充值通道开通:支付宝/微信支付支持
  • 大模型 API官方价 VS 中转价:中小团队如何借力实现降本增效|poloapi.top - poloapi-ai大模型
  • WASM代码防逆向新突破:C语言混淆的5个关键技术点曝光
  • YOLOFuse使用指南:快速上手多模态目标检测训练与推理
  • YOLOFuse物联网边缘节点部署案例
  • 2025年仓库货架定制口碑榜TOP10,选购必看,悬臂式货架/流利式货架/可调节货架/304货架/不锈钢货架/悬臂货架仓库货架源头厂家哪家好 - 品牌推荐师
  • YOLOFuse深度伪造识别辅助功能
  • YOLOFuse TensorRT加速路线图:推理性能翻倍计划
  • TPU+C语言协同设计精髓(多核任务负载均衡实战方案)
  • YOLOFuse标签复用机制解析:为何无需单独标注红外图
  • 类型安全设计全解析,构建坚如磐石的C++泛型代码体系
  • YOLOFuse CI/CD流水线构建:GitHub Actions自动化测试
  • YOLOFuse决策级融合鲁棒性强,适合高可靠性需求场景
  • TensorRT C语言批处理优化指南(实测提升8倍吞吐的秘密武器)
  • C语言集成TensorRT时如何最大化批处理效率?90%工程师忽略的关键细节
  • 钉钉机器人集成DeepSeek的概述
  • 【稀缺资料】:NVIDIA工程师不会告诉你的CUDA内存对齐秘密技巧
  • 【OpenMP 5.3负载均衡终极指南】:掌握高效并行编程的5大核心策略
  • YOLOFuse ONNX Runtime跨平台运行实测
  • YOLOFuse OpenVINO转换教程:Intel CPU上运行
  • 【稀缺资源】工业级量子纠缠度算法源码首次公开(基于C语言)
  • YOLOFuse Bug反馈渠道:GitHub Issues使用规范
  • 新手学习Linux运维,该选Rocky Linux还是Ubuntu?
  • 汽车功能安全中vh6501 busoff测试实践