nom_openmetrics/
sample.rs1use crate::Label;
2
3#[derive(Debug, PartialEq)]
5pub struct Sample<'a> {
6    name: &'a str,
7    labels: Vec<Label<'a>>,
8    number: f64,
9}
10
11impl<'a> Sample<'a> {
12    pub fn new(name: &'a str, number: f64) -> Self {
14        let labels = vec![];
15
16        Self {
17            name,
18            labels,
19            number,
20        }
21    }
22
23    pub fn with_labels(name: &'a str, number: f64, labels: Vec<Label<'a>>) -> Self {
25        Self {
26            name,
27            labels,
28            number,
29        }
30    }
31
32    pub fn add_label(mut self, name: &'a str, value: &str) -> Self {
34        let label = Label {
35            name,
36            value: value.into(),
37        };
38
39        self.labels.push(label);
40
41        self
42    }
43
44    pub fn labels(&self) -> &[Label<'a>] {
46        &self.labels
47    }
48
49    pub fn name(&self) -> &str {
51        self.name
52    }
53
54    pub fn number(&self) -> f64 {
56        self.number
57    }
58}