observability 0.1.3

Experimental tracing ideas
Documentation
use observability::metrics;
use tracing::*;
use std::error::Error;

metrics!(MyMetric, CounterA, CounterB);

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    observability::test_run().ok();
    observability::metrics::init();
    let span = debug_span!("span a");
    let _g = span.enter();

    MyMetric::count(MyMetric::CounterA, 30);
    MyMetric::count(MyMetric::CounterA, 40);
    MyMetric::count(MyMetric::CounterB, 40);
    MyMetric::count(MyMetric::CounterB, 40u64);

    MyMetric::count_filter(MyMetric::CounterA, 10, "my_filter");
    MyMetric::count_filter(MyMetric::CounterA, 10, "my_other_filter");

    MyMetric::print();
    let mut td = std::env::temp_dir();
    td.push("metrics_csv");
    std::fs::create_dir(&td).ok();
    td.push("metrics.csv");
    MyMetric::save_csv(&td);

    Ok(())
}