本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。