Iterator::flat_map()
Map с последующим разглаживанием вложенных итераторов.
Сигнатура
fn flat_map<U: IntoIterator, F: FnMut(Self::Item) -> U>(self, f: F) -> FlatMap<...>Применяет функцию, возвращающую итератор для каждого элемента, и сшивает все результаты в один плоский поток.
let words = vec!["ab", "cd"];
let chars: Vec<char> = words.iter().flat_map(|s| s.chars()).collect();
println!("{:?}", chars); // ['a', 'b', 'c', 'd']