本文簡要介紹rust語言中 std::iter::Iterator.map
的用法。
用法
fn map<B, F>(self, f: F) -> Map<Self, F> where F: FnMut(Self::Item) -> B,
接受一個閉包並創建一個迭代器,該迭代器在每個元素上調用該閉包。
map()
通過其參數將一個迭代器轉換為另一個迭代器:實現 FnMut
的東西。它產生一個新的迭代器,它在原始迭代器的每個元素上調用這個閉包。
如果你善於思考類型,你可以這樣想map()
:如果你有一個迭代器,它為你提供某種類型的元素 A
,並且你想要一個其他類型的迭代器 B
,你可以使用 map()
,傳遞一個帶有 A
並返回 B
的閉包。
map()
在概念上類似於 for
循環。但是,由於 map()
是惰性的,因此最好在您已經在使用其他迭代器時使用它。如果您正在為副作用進行某種循環,則使用 for
比使用 map()
更為慣用。
例子
基本用法:
let a = [1, 2, 3];
let mut iter = a.iter().map(|x| 2 * x);
assert_eq!(iter.next(), Some(2));
assert_eq!(iter.next(), Some(4));
assert_eq!(iter.next(), Some(6));
assert_eq!(iter.next(), None);
如果你正在做某種副作用,更喜歡 for
到 map()
:
// don't do this:
(0..5).map(|x| println!("{}", x));
// it won't even execute, as it is lazy. Rust will warn you about this.
// Instead, use for:
for x in 0..5 {
println!("{}", x);
}
相關用法
- Rust Iterator.map_while用法及代碼示例
- Rust Iterator.max_by_key用法及代碼示例
- Rust Iterator.max用法及代碼示例
- Rust Iterator.max_by用法及代碼示例
- Rust Iterator.min用法及代碼示例
- Rust Iterator.min_by用法及代碼示例
- Rust Iterator.min_by_key用法及代碼示例
- Rust Iterator.skip_while用法及代碼示例
- Rust Iterator.is_sorted用法及代碼示例
- Rust Iterator.cmp用法及代碼示例
- Rust Iterator.is_partitioned用法及代碼示例
- Rust Iterator.intersperse用法及代碼示例
- Rust Iterator.scan用法及代碼示例
- Rust Iterator.find_map用法及代碼示例
- Rust Iterator.peekable用法及代碼示例
- Rust Iterator.rev用法及代碼示例
- Rust Iterator.product用法及代碼示例
- Rust Iterator.any用法及代碼示例
- Rust Iterator.by_ref用法及代碼示例
- Rust Iterator.copied用法及代碼示例
- Rust Iterator.inspect用法及代碼示例
- Rust Iterator.intersperse_with用法及代碼示例
- Rust Iterator.flat_map用法及代碼示例
- Rust Iterator.ge用法及代碼示例
- Rust Iterator.gt用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 std::iter::Iterator.map。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。