Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
use std::collections::HashMap; fn main() { let words = vec!["apple", "banana", "cherry", "apricot", "blueberry", "avocado"]; // Chain of adapters — no intermediate allocations let a_words_upper: Vec<String> = words.iter() .filter(|w| w.starts_with('a')) .map(|w| w.to_uppercase()) .collect(); println!("a-words: {:?}", a_words_upper); // fold — general reduction let total_len: usize = words.iter().fold(0, |acc, w| acc + w.len()); println!("total char count: {total_len}"); // flat_map — flatten nested iterables let letters: Vec<char> = words.iter() .flat_map(|w| w.chars()) .filter(|c| *c == 'a') .collect(); println!("count of 'a': {}", letters.len()); // enumerate + collect into HashMap let index_map: HashMap<usize, &str> = words.iter() .enumerate() .map(|(i, &w)| (i, w)) .collect(); println!("word at index 2: {}", index_map[&2]); // zip two iterators let nums = vec![1u32, 2, 3]; let labels = vec!["one", "two", "three"]; let zipped: Vec<_> = nums.iter().zip(labels.iter()).collect(); println!("zipped: {:?}", zipped); // scan — accumulating state mid-stream let running: Vec<u32> = (1..=5) .scan(0u32, |state, x| { *state += x; Some(*state) }) .collect(); println!("running sums: {:?}", running); // any / all println!("any > 5 chars: {}", words.iter().any(|w| w.len() > 5)); println!("all non-empty: {}", words.iter().all(|w| !w.is_empty())); }
Result
Open