metriki_warp/
lib.rs

1use std::sync::Arc;
2
3use metriki_core::MetricsRegistry;
4use warp::{self, Filter};
5
6/// Inject metriki `MetricRegistry` into your warp handler
7///
8/// ```no_run
9/// use std::sync::Arc;
10///
11/// use metriki_core::MetricsRegistry;
12/// use metriki_warp::with_metrics;
13/// use warp::{self, Filter};
14///
15/// let metrics = MetricsRegistry::arc();
16/// let router = warp::get()
17///   .and(with_metrics(metrics))
18///   .map(|mtk: Arc<MetricsRegistry>| {
19///      mtk.meter("hit").mark();
20///      "yes"
21///   });
22/// ```
23///
24pub fn with_metrics(
25    m: Arc<MetricsRegistry>,
26) -> impl Filter<Extract = (Arc<MetricsRegistry>,), Error = std::convert::Infallible> + Clone {
27    warp::any().map(move || m.clone())
28}