metriken 0.10.0

A fast and lightweight metrics library
Documentation
use metriken::{metric, Counter, MetricBuilder, Window, WindowedLazyCounter};

#[metric(name = "wrapper_fwd_static")]
static STATIC_WINDOWED: WindowedLazyCounter = WindowedLazyCounter::new(Counter::new);

fn value_window_of(metric_name: &str) -> Option<Option<Window>> {
    metriken::metrics()
        .iter()
        .find(|entry| entry.name() == metric_name)
        .map(|entry| entry.value_with_window().1)
}

fn load_window_of(metric_name: &str) -> Option<Option<Window>> {
    metriken::metrics()
        .iter()
        .find(|entry| entry.name() == metric_name)
        .map(|entry| entry.load_window())
}

#[test]
fn metric_wrapper_forwards_window_for_static_metric() {
    STATIC_WINDOWED.set_with_window(7, Window::new(11, 22));
    assert_eq!(
        value_window_of("wrapper_fwd_static"),
        Some(Some(Window::new(11, 22)))
    );
    assert_eq!(
        load_window_of("wrapper_fwd_static"),
        Some(Some(Window::new(11, 22)))
    );
}

#[test]
fn provider_metric_forwards_window_for_dynamic_metric() {
    let dynamic =
        MetricBuilder::new("wrapper_fwd_dynamic").build(WindowedLazyCounter::new(Counter::new));
    dynamic.set_with_window(9, Window::new(33, 44));
    assert_eq!(
        value_window_of("wrapper_fwd_dynamic"),
        Some(Some(Window::new(33, 44)))
    );
    assert_eq!(
        load_window_of("wrapper_fwd_dynamic"),
        Some(Some(Window::new(33, 44)))
    );
    drop(dynamic);
}