rill_protocol/calc/
avg.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Deserialize, Serialize, Debug, Clone, Default)]
4pub struct Avg {
5    counter: u64,
6    sum: f64,
7}
8
9impl Avg {
10    pub fn new() -> Self {
11        Self::default()
12    }
13
14    pub fn add(&mut self, value: f64) {
15        self.counter += 1;
16        self.sum += value;
17    }
18
19    pub fn value(&self) -> f64 {
20        if self.counter == 0 {
21            0.0
22        } else {
23            self.sum / self.counter as f64
24        }
25    }
26}