new_york_utils 0.1.9

Library for calculation some things
Documentation
pub struct Buffer {
    vals: Vec<f64>,
    pub(crate) len: usize,
    pushes: usize,
    pub(crate) index: usize,
    pub(crate) sum: f64,
}

impl Buffer {
    pub fn new(len: usize) -> Self {
        Buffer {
            vals: vec![0.0; len],
            len,
            pushes: 0,
            index: 0,
            sum: 0.0,
        }
    }

    pub fn push(&mut self, val: f64) {
        if self.pushes >= self.len {
            self.sum -= self.vals[self.index];
        }

        self.sum += val;
        self.vals[self.index] = val;
        self.pushes += 1;
        self.index += 1;
        if self.index >= self.len {
            self.index = 0;
        }
    }

    pub fn qpush(&mut self, val: f64) {
        self.vals[self.index] = val;
        self.index += 1;
        if self.index >= self.len {
            self.index = 0;
        }
    }

    pub fn get(&self, ind: usize) -> f64 {
        self.vals[(self.index + self.len - 1 + ind) % self.len]
    }
}