Rs
Module 2Slices & ViewsLesson 8 of 922 min

Array/Slice Windows for Prices

&[T] views, slicing ranges, and SMA without copying the whole series.

Slice type &[T]

rust
let prices = [100.0, 101.0, 99.5, 102.0, 103.0];
let window: &[f64] = &prices[1..4];

Iteration without taking ownership

rust
fn main() {
    let prices = [100.0, 101.0, 99.5, 102.0, 103.0];
    for p in prices.iter() {
        println!("{p}");
    }
    let sum: f64 = prices.iter().sum();
    println!("sum={sum}");
}
Output
100
101
99.5
102
103
sum=505.5

Exercise

SMA over full series and last 3 points.

Challenge

Write fn min_max(xs: &[f64]) -> Option<(f64, f64)>.

Tips
  • Slices prevent needless Vec clones
  • len() is usize — cast to f64 for division
  • Empty slice edge cases matter in rolling stats

Try it live

Array/Slice Windows for PricesRust 2021
Loading editor…
Output
Press Run to compile and execute.