當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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