Towards the end of my previous post about for loops in Rust, I mentioned how those loops can often be expressed in a more declarative way. This alternative approach involves chaining methods of the Iterator trait to create specialized transformation pipelines: let odds_squared: Vec<_> = (1..100) .filter(|x| x % 2 != 0) .map(|x| x * x) .collect(); Playground link Code like this isn’t unique to Rust