本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。