use super::{
middleware::stats_layer,
state::StateProvider,
};
use axum::{
Router,
middleware::from_fn_with_state,
};
use std::sync::Arc;
pub trait RouterExt<S>
where
S: Clone + Send + Sync + 'static,
{
#[must_use]
fn add_stats_gathering<SP: StateProvider>(self, state: &Arc<SP>) -> Self;
}
impl<S> RouterExt<S> for Router<S>
where
S: Clone + Send + Sync + 'static,
{
fn add_stats_gathering<SP: StateProvider>(self, state: &Arc<SP>) -> Self {
self.layer(from_fn_with_state(Arc::clone(state), stats_layer))
}
}