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

Rust - 链式调用练习

use std::collections::HashSet;fn main() {// 题目1:基本转换 有一个整数数组 [1, 2, 3, 4, 5],使用迭代器方法将每个元素加1,然后收集到一个新的Vec中let arr1 = [1, 2, 3, 4, 5];let result1: Vec<i32> = arr1.iter().map(|x| *x + 1).collect();println!("{:?}", result1);// 题目2:过滤和转换// 有一个字符串数组 ["hello", "", "world", " ", "rust", ""],// 过滤掉所有空字符串和只包含空格的字符串,然后将剩余的字符串转换为大写,最后收集到Vec中。let arr2 = ["hello", "", "world", " ", "rust", ""];let result2: Vec<String> = arr2.iter().filter(|&&s| !s.trim().is_empty()).map(|s| s.to_uppercase()).collect();println!("{:?}", result2);// 题目3:扁平化处理// 有一个二维整数数组 vec![vec![1, 2], vec![3, 4, 5], vec![6]],使用flat_map将其扁平化为一维数组。let arr3 = vec![vec![1, 2], vec![3, 4, 5], vec![6]];let result3: Vec<i32> = arr3.iter().flat_map(|vec_| vec_.iter()).map(|x| *x).collect();println!("{:?}", result3);// 题目4:带索引的过滤// 有一个整数数组 [10, 15, 20, 25, 30],// 使用filter只保留大于15的元素,然后使用enumerate给每个元素标上索引,最后收集为Vec<(usize, i32)>。let arr4 = [10, 15, 20, 25, 30];let result4: Vec<(usize, i32)> = arr4.iter().filter(|&x| *x > 15).enumerate().map(|(idx, v)| (idx, *v)).collect();println!("{:?}", result4);// 题目5:合并数组// 有两个数组:["Alice", "Bob", "Charlie"]和 [30, 25, 35],使用zip将它们合并成一个元组数组 [(名字, 年龄)]。let arr5 = ["Alice", "Bob", "Charlie"];let arr6 = [30, 25, 35];let result5: Vec<(&str, i32)> = arr5.iter().zip(arr6.iter()).map(|(&name, &age)| (name, age)).collect();println!("{:?}", result5);// 题目6:切片选取// 有一个整数数组 1..=10(包含1到10),使用take和skip取第4到第8个元素(包含两端)。let item_4_8: Vec<i32> = (1..=10).skip(3).take(5).collect();println!("{:?}", item_4_8);// 题目7:类型转换// 有一个整数数组 [1, 2, 3, 4, 5],使用map将每个整数转换为其字符串表示,然后收集成一个字符串数组。let arr7 = [1, 2, 3, 4, 5];let result7 = arr7.map(|x| x.to_string());println!("{:?}", result7);// 题目8:循环迭代// 有一个数组 [1, 2, 3],使用cycle方法创建一个无限循环的迭代器,然后取前8个元素收集到Vec中let arr8 = [1, 2, 3];let result8: Vec<i32> = arr8.iter().cycle().take(8).cloned().collect();println!("{:?}", result8);// 题目9:条件转换// 有一个整数数组 [1, 4, 9, 16, 25, 30],使用filter_map过滤出完全平方数(平方根为整数),并计算其平方根let arr9 = [1, 4, 9, 16, 25, 30];let result9: Vec<i32> = arr9.iter().filter_map(|&x| {let v = (x as f64).sqrt() as i32;if v * v == x {Some(v)}else{None}}).collect(); println!("{:?}",result9);// 题目10:连接和去重// 有两个整数数组 [1, 2, 3, 4, 5]和 [4, 5, 6, 7, 8],// 使用chain将它们连接起来,然后去除重复元素,最后排序(可以使用collect收集到Vec后再排序)。let arr10 = [1, 2, 3, 4, 5];let arr11 = [4, 5, 6, 7, 8];let mut result: Vec<i32> = arr10.iter().chain(arr11.iter()).copied().collect::<HashSet<_>>().into_iter().collect();result.sort();println!("{:?}", result);}
http://www.jsqmd.com/news/177857/

相关文章:

  • 基于FPGA的图像去雾算法:完整的仿真测试与高质量Matlab代码
  • 互联网大厂Java小白求职面试实录:从Spring到微服务的全面挑战
  • Unity动画混合硬核指南:手写BlendTree代码
  • 8款AI论文写作工具功能对比:智能降重与高效创作能力测评
  • 导师严选2025 AI论文网站TOP9:继续教育必备测评
  • 从Java基础到微服务:小白程序员的求职面试之旅
  • 如何利用大数据预测分析优化供应链管理
  • 智能降重与高效创作:8款AI论文写作工具横向评测
  • java计算机毕业设计休闲农场管理系统 智慧共享农庄运营平台 都市田园会员制农场管理系统
  • 统计今天,近一周,当月,年份统计记录
  • 《创业之路》-778-致2026年元旦-人类开启星际文明的应用场景、技术路径
  • 8款AI论文写作工具测评:智能降重与高效创作功能分析
  • 重定向和“Linux下一切皆文件”的理解
  • 7#2#东地库,监控很掉线,找不到原因
  • 强烈安利!专科生必用8款AI论文工具测评
  • why Ch chose to stand with USSR in K war
  • 字节版 NotebookLM 悄悄上线;乐鑫、涂鸦争相推出 AI 硬件交互方案;2025 AI 语音输入工具盘点丨日报
  • java计算机毕业设计雄宗土特产销售网站 雄宗农特产品在线商城系统 雄宗特色农产品电商交易平台
  • 大学生HTML期末大作业——HTML+CSS+JavaScript美食网站(零食) - 详解
  • 统计今日、最近一周、最近一个月
  • 强烈安利8个AI论文写作软件,专科生搞定毕业论文!
  • 2025第三届数信杯
  • 【类定义系列五】类静态成员变量初始化
  • java计算机毕业设计信阳市多目的地同步导航系统 信阳都市圈多点路径智能规划小程序 豫南城市群多目标位置同步导航平台
  • 数据结构 字典树
  • 大数据领域 HDFS 的数据备份的最佳实践案例
  • 线段树讲解
  • 利用 ‘Vectorstore Retrievable Memory’:如何实现跨会话(Cross-session)的全局偏好召回?
  • Comsol Mie米氏散射:多极子分解仿真与案例分析
  • C:写一个函数返回参数二进制中1的个数