tower_load_shed/
layer.rs

1use std::fmt;
2use tower_layer::Layer;
3
4use crate::LoadShed;
5
6/// A `tower-layer` to wrap services in `LoadShed` middleware.
7#[derive(Clone)]
8pub struct LoadShedLayer {
9    _p: (),
10}
11
12impl LoadShedLayer {
13    /// Creates a new layer.
14    pub fn new() -> Self {
15        LoadShedLayer { _p: () }
16    }
17}
18
19impl<S> Layer<S> for LoadShedLayer {
20    type Service = LoadShed<S>;
21
22    fn layer(&self, service: S) -> Self::Service {
23        LoadShed::new(service)
24    }
25}
26
27impl fmt::Debug for LoadShedLayer {
28    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
29        f.debug_struct("LoadShedLayer").finish()
30    }
31}