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}