| 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() |
| } |
| } |