上一个简单的例子,你可能就容易明白

fn main() {let data = vec![vec![1, 2], vec![3, 4], vec![5, 6, 7, 8]];let new_data = data.iter().flat_map(|v| v); //Flat_map类型println!("new_data :{:?}", new_data);for v in new_data {println!("v:{:?}", *v);}thread::sleep_ms(500000);
}

输出:

v:1
v:2
v:3
v:4
v:5
v:6
v:7
v:8

let words = ["alpha", "beta", "gamma"];// chars() returns an iterator
let merged: String = words.iter().flat_map(|s| s.chars()).collect();
assert_eq!(merged, "alphabetagamma");
(0..5).flat_map(|x| x * 100 .. x * 110).enumerate().filter(|&(i, x)| (i + x) % 3 == 0).for_each(|(i, x)| println!("{}:{}", i, x));
let a = ["1", "2", "lol"];let mut iter = a.iter().filter_map(|s| s.parse().ok());

等价于:

let mut iter = a.iter().map(|s| s.parse()) //=>option.filter(|s| s.is_ok()).map(|s| s.unwrap()); 

什么情况你才能理解fitler_map的好?
比如:


use std::str::FromStr;
let text = "1\nfrond .25  289\n3.1415 estuary\n";
for number in text.split_whitespace()                 .filter_map(|w| f64::from_str(w).ok()) {  println!("{:4.2}", number.sqrt());
}

输出:
1.00
0.50
17.00
1.77

Rust: flat_map、filter_map、for_each相关推荐

  1. 非变动性算法源代码分析与使用示例( for_each、min_element 、find_if、search 等)...

    非变动性算法代码分析与示例: 一.for_each C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14   // TEMPLATE FUNCTION for_each ...

  2. rust 面向对象之Struct、impl、trait关键字使用

    rust 面向对象之Struct.impl.trait关键字使用 rust语言跟C.C++是一个性能级别的语言,在用法上要比C++简单很多.例如:要实现一个web服务,RUST可以通过包管理工具直接安 ...

  3. 第九十八期:TIOBE11月榜单:C、Swift、Go、D与Rust起起伏伏

    TIOBE 指数并不代表语言的好坏,开发者可以使用该榜单检查自身的编程技能是否需要更新,或者在开始构建新软件时对某一语言做出选择. 作者:oschina TIOBE 公布了 11 月份编程语言排行榜. ...

  4. 为什么大学普遍都教C/C++、Java,而不教Golang、Python、Rust?

    教C/C++.JAVA是肯定没问题的,不教Go.Python.Rust绝对没有好处,不过我认为学生可以自学,这是长期以来形成的历史原因.缺少好的教材,老一辈的教授大部分也都没接触过这些新的语言,他们又 ...

  5. TIOBE 11 月榜单:C、Swift、Go、D 与 Rust 起起伏伏

    TIOBE 公布了 11 月份编程语言排行榜. 本月前 20 名中有一些有趣的现象,先看看榜单: 首先,C 现在非常接近 Java,排在 Java 后指数仅差 0.2%,预计年底之前 C 会再次冲上第 ...

  6. Python、Go、JavaScript、Rust 将长盛 5 年!

    编程语言正在不断演化,但预测 5 年后会如何则很有难度,作者给出了一个答案. 作者 | Timothy Mugayi 译者 | 明明如月,责编 | 唐小引 封图 | CSDN 付费下载自 VCG 出品 ...

  7. C++、Python、Rust、Scala 构建编译器的差异性究竟有多大?

    [CSDN 编者按]编程语言之争是开发者们热议的永恒话题,在不同语言的选择和设计决定上也都观点不一.那么在面对大型项目时该如何选择具体实现呢?本文的作者借课程项目之机,比较了Rust.Haskell. ...

  8. 打败 Python、JS、C# 成最受欢迎编程语言,是时候掌握 Rust 了吗?

    无论何时,编程语言的流行度都是一个经典且火热的讨论话题.而怎样衡量流行度?如果两种语言的目标和适用人群迥异,该如何较出高下?事实上,有许多方法可以衡量编程语言的流行度.例如,可以查看 StackOve ...

  9. Rust 中的指针:Box、Rc、Cell、RefCell

    Rust 中的指针:Box.Rc.Cell.RefCell 作者:许野平 2022-02-21 Rust 自身具有 &.* 操作符,可以实现变量引用和解引用.为什么又搞出这几个类型的指针呢?原 ...

  10. Rust、D、Go三者的Pk1

    比较Rust.D.Go的单线程的运算.内存占用,Rust 1.0 alpha2(64位) ,D 2.066.1(ldc2编译器0.15.1(基于llvm3.6 msvc64)).Go 1.4.2(64 ...

最新文章

  1. 基于webpack的前端工程化开发解决方案探索(一):动态生成HTML
  2. 过度加班被表彰引员工不满。官方回应:持续高强度的急行军不持久,尽快优化调整...
  3. python恶搞表情包-用 Python 把你的朋友变成表情包
  4. 一群人花费了四年的时间以NASA的数据巨制“月球”
  5. python调用数据库判断_python 访问数据库 笔记
  6. Sub-process /usr/bin/dpkg returned an error code (1)
  7. 洛谷 P1708 天然气井 题解
  8. python映射类型是什么意思_Python对象类型
  9. excel如何做单元格下拉和根据文字自动变色
  10. android6.0源码分析之Camera API2.0下的初始化流程分析
  11. VTK:网格之OBBDicer
  12. UVA 712 S-Trees
  13. SAP Spartacus维护CMS Component到Angular Component的源代码位置
  14. 庖丁解牛TLD(一)——开篇
  15. android电视打印信息解析,关于液晶电视打印信息
  16. redis实例python_生产消费者模式与python+redis实例运用(基础篇)
  17. 测试Python的poplib模块读取邮箱信息
  18. 服务器显示配额不足什么原因,win7系统显示配额不足导致无法访问的解决方法...
  19. Windows 文件夹或文件名 太长无法删除怎么办? 一招教你怎样解决.
  20. Uncaught TypeError: Cannot add property 0, object is not extensible 引起的思考

热门文章

  1. HTML基础知识回顾整理
  2. UltraEdit-32 温馨提示:右协会,取消 bak文件
  3. 使用webclient上传下载实例
  4. AD域服务器中批量创建帐户
  5. JavaScript 对象分类
  6. 注意,更改团队所属业务部门用Update消息无效!
  7. eclipse 与my eclipse区别,IDE
  8. 彻头彻尾理解 ConcurrentHashMap
  9. 算法与数据结构实验题 4.1 伊姐姐数字 game
  10. MS SQL的某一数据库成了Single User模式