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}