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