diff options
Diffstat (limited to 'vendor/tower-layer/src/identity.rs')
| -rw-r--r-- | vendor/tower-layer/src/identity.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/vendor/tower-layer/src/identity.rs b/vendor/tower-layer/src/identity.rs new file mode 100644 index 00000000..5233a1d8 --- /dev/null +++ b/vendor/tower-layer/src/identity.rs @@ -0,0 +1,37 @@ +use super::Layer; +use std::fmt; + +/// A no-op middleware. +/// +/// When wrapping a [`Service`], the [`Identity`] layer returns the provided +/// service without modifying it. +/// +/// [`Service`]: https://docs.rs/tower-service/latest/tower_service/trait.Service.html +#[derive(Default, Clone)] +pub struct Identity { + _p: (), +} + +impl Identity { + /// Create a new [`Identity`] value + pub const fn new() -> Identity { + Identity { _p: () } + } +} + +/// Decorates a [`Service`], transforming either the request or the response. +/// +/// [`Service`]: https://docs.rs/tower-service/latest/tower_service/trait.Service.html +impl<S> Layer<S> for Identity { + type Service = S; + + fn layer(&self, inner: S) -> Self::Service { + inner + } +} + +impl fmt::Debug for Identity { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Identity").finish() + } +} |
