Rust: flat_map、filter_map、for_each
来源:互联网 发布:男士轻奢衣服品牌 知乎 编辑:程序博客网 时间:2024/06/07 21:56
上一个简单的例子,你可能就容易明白
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 iteratorlet 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
阅读全文
0 0
- Rust: flat_map,filter_map,for_each
- Rust: flat_map、filter_map、for_each
- for_each
- for_each
- for_each
- for_each
- for_each
- for_each
- for_each
- for_each
- for_each
- for_each
- rust
- Rust:Programming Rust:所有权
- for_each example
- STL for_each
- for_each用法
- STL::for_each
- MFC第一天——Win32实现计算器
- 拦截器
- DSS 代码分析【RTSP消息交互过程】
- Mysql番外篇_存储过程和存储函数
- Git之local操作学习
- Rust: flat_map、filter_map、for_each
- 浅谈反摩尔定律
- C语言 数组
- Qt5.7 + VS2015 环境搭建
- Doxygen安装与基本配置
- “Incremental Linker已停止工作”的处理方法
- Cad转换
- cronSchedule 配置说明
- 生活小记45