Skip to main content

radiate_core/stats/
view.rs

1use radiate_utils::Statistic;
2
3pub struct MetricView<'a, T> {
4    pub(super) name: &'a str,
5    pub(super) statistic: &'a Statistic,
6    pub(super) mapper: fn(f32) -> Option<T>,
7}
8
9impl<'a, T> MetricView<'a, T> {
10    pub fn name(&self) -> &str {
11        self.name
12    }
13
14    pub fn count(&self) -> i32 {
15        self.statistic.count()
16    }
17
18    pub fn last(&self) -> Option<T> {
19        (self.mapper)(self.statistic.last_value())
20    }
21
22    pub fn sum(&self) -> Option<T> {
23        (self.mapper)(self.statistic.sum())
24    }
25
26    pub fn mean(&self) -> Option<T> {
27        (self.mapper)(self.statistic.mean())
28    }
29
30    pub fn var(&self) -> Option<T> {
31        (self.mapper)(self.statistic.variance()?)
32    }
33
34    pub fn stddev(&self) -> Option<T> {
35        (self.mapper)(self.statistic.std_dev()?)
36    }
37
38    pub fn skewness(&self) -> Option<T> {
39        (self.mapper)(self.statistic.skewness()?)
40    }
41
42    pub fn kurtosis(&self) -> Option<T> {
43        (self.mapper)(self.statistic.kurtosis()?)
44    }
45
46    pub fn min(&self) -> Option<T> {
47        (self.mapper)(self.statistic.min())
48    }
49
50    pub fn max(&self) -> Option<T> {
51        (self.mapper)(self.statistic.max())
52    }
53}