// Created on savesnippets.com · https://savesnippets.com/gJrpaSoGP8DZas 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> let lists = vec![vec![1, 2, 3], vec![4, 5], vec![6]]; let merged: Vec = 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 = opts.iter().flatten().flat_map(|s| s.chars()).collect(); println!("{chars:?}"); // ['a', 'b', 'c', 'd', 'e'] }