Iterator adapters are lazy. map, filter and filter_map build a new iterator and run nothing:
let lazy = raw.iter().map(|s| s.len()); // zero elements processed
Work begins only when something consumes the iterator: collect, sum, count, for, fold, find. Until then you are assembling a pipeline, not running one.
