Skip to main content

made_core/entities/
metric_sample.rs

1use std::collections::BTreeMap;
2
3use crate::value_objects::{MetricLabelName, MetricLabelValue, MetricName, MetricValue};
4
5/// One flattened sample from a Prometheus exposition.
6#[derive(Clone, Debug, PartialEq)]
7pub struct MetricSample {
8    name: MetricName,
9    labels: BTreeMap<MetricLabelName, MetricLabelValue>,
10    value: MetricValue,
11}
12
13impl MetricSample {
14    #[must_use]
15    pub fn new(
16        name: MetricName,
17        labels: BTreeMap<MetricLabelName, MetricLabelValue>,
18        value: MetricValue,
19    ) -> Self {
20        Self {
21            name,
22            labels,
23            value,
24        }
25    }
26
27    #[must_use]
28    pub fn name(&self) -> &MetricName {
29        &self.name
30    }
31
32    #[must_use]
33    pub fn labels(&self) -> &BTreeMap<MetricLabelName, MetricLabelValue> {
34        &self.labels
35    }
36
37    #[must_use]
38    pub fn value(&self) -> MetricValue {
39        self.value
40    }
41}