当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust Iterator.flat_map用法及代码示例


本文简要介绍rust语言中 std::iter::Iterator.flat_map 的用法。

用法

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> where    U: IntoIterator,    F: FnMut(Self::Item) -> U,

创建一个像 map 一样工作的迭代器,但会扁平化嵌套结构。

map 适配器非常有用,但仅当闭包参数产生值时。如果它产生一个迭代器,那么会有一个额外的间接层。 flat_map() 将自行删除这个额外的层。

您可以将 flat_map(f) 视为 map ping 的语义等价物,然后将 flatten 视为 map(f).flatten()

另一种思考 flat_map() 的方式: map 的闭包为每个元素返回一个项目,而 flat_map() 的闭包为每个元素返回一个迭代器。

例子

基本用法:

let words = ["alpha", "beta", "gamma"];

// chars() returns an iterator
let merged: String = words.iter()
                          .flat_map(|s| s.chars())
                          .collect();
assert_eq!(merged, "alphabetagamma");

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::iter::Iterator.flat_map。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。