本文简要介绍rust语言中 core::iter::Iterator.for_each
的用法。
用法
fn for_each<F>(self, f: F) where Self: Sized, F: FnMut(Self::Item),
对迭代器的每个元素调用闭包。
这等效于在迭代器上使用 for
循环,尽管break
和continue
在闭包中是不可能的。使用for
循环通常更惯用,但在处理较长迭代器链末尾的项目时,for_each
可能更清晰。在某些情况下,for_each
也可能比循环更快,因为它会在 Chain
等适配器上使用内部迭代。
例子
基本用法:
use std::sync::mpsc::channel;
let (tx, rx) = channel();
(0..5).map(|x| x * 2 + 1)
.for_each(move |x| tx.send(x).unwrap());
let v: Vec<_> = rx.iter().collect();
assert_eq!(v, vec![1, 3, 5, 7, 9]);
对于这样一个小例子,for
循环可能更干净,但 for_each
可能更适合保持具有更长迭代器的函数式样式:
(0..5).flat_map(|x| x * 100 .. x * 110)
.enumerate()
.filter(|&(i, x)| (i + x) % 3 == 0)
.for_each(|(i, x)| println!("{}:{}", i, x));
相关用法
- Rust Iterator.for_each用法及代码示例
- Rust Iterator.fold用法及代码示例
- Rust Iterator.find_map用法及代码示例
- Rust Iterator.flat_map用法及代码示例
- Rust Iterator.fuse用法及代码示例
- Rust Iterator.flatten用法及代码示例
- Rust Iterator.find用法及代码示例
- Rust Iterator.filter用法及代码示例
- Rust Iterator.filter_map用法及代码示例
- Rust Iterator.skip_while用法及代码示例
- Rust Iterator.max_by_key用法及代码示例
- Rust Iterator.is_sorted用法及代码示例
- Rust Iterator.cmp用法及代码示例
- Rust Iterator.is_partitioned用法及代码示例
- Rust Iterator.intersperse用法及代码示例
- Rust Iterator.scan用法及代码示例
- Rust Iterator.min用法及代码示例
- Rust Iterator.peekable用法及代码示例
- Rust Iterator.rev用法及代码示例
- Rust Iterator.product用法及代码示例
- Rust Iterator.any用法及代码示例
- Rust Iterator.max用法及代码示例
- Rust Iterator.by_ref用法及代码示例
- Rust Iterator.min_by用法及代码示例
- Rust Iterator.copied用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 core::iter::Iterator.for_each。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。