fn main() {
let words = vec!["hello world", "foo bar baz", "rust"];
// Split each phrase into words, then flatten
let all_words: Vec<&str> = words.iter()
.flat_map(|s| s.split_whitespace())
.collect();
println!("{all_words:?}"); // ["hello", "world", "foo", "bar", "baz", "rust"]
// flatten — when you already have Iterator<Item = Iterator<Item = T>>
let lists = vec![vec![1, 2, 3], vec![4, 5], vec![6]];
let merged: Vec<i32> = lists.into_iter().flatten().collect();
println!("{merged:?}"); // [1, 2, 3, 4, 5, 6]
// Filter + flat_map — extract chars from Some strings only
let opts = vec![Some("abc"), None, Some("de")];
let chars: Vec<char> = opts.iter().flatten().flat_map(|s| s.chars()).collect();
println!("{chars:?}"); // ['a', 'b', 'c', 'd', 'e']
}
Create a free account and build your private vault. Share publicly whenever you want.