metrics_prometheus_client/metrics/
mod.rs1use prometheus_client::{
2 encoding::{EncodeMetric, MetricEncoder},
3 metrics::MetricType,
4};
5
6pub use self::{counter::*, gauge::*, histogram::*};
7use std::{fmt, sync::Arc};
8
9mod counter;
10mod gauge;
11mod histogram;
12
13#[derive(Debug)]
14pub enum Metric {
15 Counter(Arc<MetricsCounter>),
16 Gauge(Arc<MetricsGauge>),
17 Histogram(Arc<MetricsHistogram>),
18}
19
20impl EncodeMetric for Metric {
21 fn encode(&self, encoder: MetricEncoder) -> Result<(), fmt::Error> {
22 match self {
23 Metric::Counter(counter) => counter.inner.encode(encoder),
24 Metric::Gauge(gauge) => gauge.inner.encode(encoder),
25 Metric::Histogram(hist) => hist.inner.encode(encoder),
26 }
27 }
28
29 fn metric_type(&self) -> MetricType {
30 match self {
31 Metric::Counter(_) => MetricType::Counter,
32 Metric::Gauge(_) => MetricType::Gauge,
33 Metric::Histogram(_) => MetricType::Histogram,
34 }
35 }
36}