radiate_core/stats/
view.rs1use 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}