metrics-dashboard 0.3.3

Zero-config dashboard with metrics-rs
Documentation
use std::sync::Arc;

use metrics::GaugeFn;
use prometheus::core::{Atomic, AtomicF64};

#[derive(Debug, Clone)]
pub struct SimpleGauge {
    value: Arc<AtomicF64>,
}

impl SimpleGauge {
    pub fn value(&self) -> f64 {
        self.value.get()
    }
}

impl Default for SimpleGauge {
    fn default() -> Self {
        Self {
            value: Arc::new(AtomicF64::new(0.0)),
        }
    }
}

impl GaugeFn for SimpleGauge {
    fn increment(&self, value: f64) {
        self.value.inc_by(value);
    }

    fn decrement(&self, value: f64) {
        self.value.dec_by(value);
    }

    fn set(&self, value: f64) {
        self.value.set(value);
    }
}