metrics-dashboard 0.3.3

Zero-config dashboard with metrics-rs
Documentation
use std::sync::{atomic::Ordering, Arc};

use metrics::CounterFn;
use prometheus::core::{Atomic, AtomicU64};

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

impl SimpleCounter {
    pub fn value(&self) -> u64 {
        self.value.get()
    }
}

impl Default for SimpleCounter {
    fn default() -> Self {
        Self {
            value: Arc::new(AtomicU64::new(0)),
        }
    }
}

impl CounterFn for SimpleCounter {
    fn increment(&self, value: u64) {
        self.value.inc_by_with_ordering(value, Ordering::SeqCst)
    }

    fn absolute(&self, value: u64) {
        self.value.swap(value, Ordering::SeqCst);
    }
}