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}