Rs
Module 5Vectors & IteratorsLesson 2 of 822 min

Iterators: map, filter, collect

Transform price series without manual index soup.

Iterator adapters

rust
fn main() {
    let xs = vec![1.0, -2.0, 3.0];
    let doubled: Vec<f64> = xs.iter().map(|x| x * 2.0).collect();
    let pos: Vec<_> = xs.iter().copied().filter(|x| *x > 0.0).collect();
    println!("doubled={doubled:?}");
    println!("pos={pos:?}");
}
Output
doubled=[2.0, -4.0, 6.0]
pos=[1.0, 3.0]

Why iterators?

Often as fast as hand loops (zero-cost) and clearer for quant pipelines.

sum

rust
let s: f64 = xs.iter().sum();
Challenge

Map returns to bps (*10_000) and collect.

Tips
  • copied() for Copy elements
  • sum::<f64>() turbofish
  • filter + collect allocates

Try it live

Iterators: map, filter, collectRust 2021
Loading editor…
Output
Press Run to compile and execute.