use std::fmt; use tower_layer::Layer; use super::LoadShed; /// A [`Layer`] to wrap services in [`LoadShed`] middleware. /// /// [`Layer`]: crate::Layer #[derive(Clone, Default)] pub struct LoadShedLayer { _p: (), } impl LoadShedLayer { /// Creates a new layer. pub fn new() -> Self { LoadShedLayer { _p: () } } } impl Layer for LoadShedLayer { type Service = LoadShed; fn layer(&self, service: S) -> Self::Service { LoadShed::new(service) } } impl fmt::Debug for LoadShedLayer { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.debug_struct("LoadShedLayer").finish() } }