| 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<S> Layer<S> for LoadShedLayer { | |
| type Service = LoadShed<S>; | |
| 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() | |
| } | |
| } |