pub struct InterceptLayer<In, Out> { /* private fields */ }Available on crate features
intercept only.Expand description
Builder for creating Intercept middleware.
Provides a fluent API for configuring input and output observers and modifiers.
Create with Intercept::layer().
§Examples
let stack = (
Intercept::layer(), // Create a new interception layer
Execute::new(|input: String| async move { input }),
);
let service = stack.into_service();
let response = service.execute("input".to_string()).await;Implementations§
Source§impl<In, Out> InterceptLayer<In, Out>
impl<In, Out> InterceptLayer<In, Out>
Sourcepub fn on_input<F>(self, f: F) -> Self
pub fn on_input<F>(self, f: F) -> Self
Adds an observer for incoming inputs.
Called before input modifications. Multiple observers execute in registration order.
§Examples
let stack = (
Intercept::layer()
.on_input(|input| println!("processing: {input}"))
.on_input(|input| println!("another: {input}")),
Execute::new(|input: String| async move { input }),
);
let service = stack.into_service();
let response = service.execute("input".to_string()).await;Sourcepub fn on_output<F>(self, f: F) -> Self
pub fn on_output<F>(self, f: F) -> Self
Adds an observer for outgoing outputs.
Called before output modifications. Multiple observers execute in registration order.
§Examples
let stack = (
Intercept::layer()
.on_output(|output| println!("response: {output}"))
.on_output(|output| println!("another response: {output}")),
Execute::new(|input: String| async move { input }),
);
let service = stack.into_service();
let response = service.execute("input".to_string()).await;Sourcepub fn modify_input<F>(self, f: F) -> Self
pub fn modify_input<F>(self, f: F) -> Self
Adds a transformation for incoming inputs.
Transforms inputs before service execution. Multiple modifications apply in registration order, each receiving the previous output.
§Examples
let stack = (
Intercept::layer()
.modify_input(|input: String| input.trim().to_string())
.modify_input(|input| input.to_lowercase()),
Execute::new(|input: String| async move { input }),
);
let service = stack.into_service();
let response = service.execute("input".to_string()).await;Sourcepub fn modify_output<F>(self, f: F) -> Self
pub fn modify_output<F>(self, f: F) -> Self
Adds a transformation for outgoing outputs.
Transforms outputs after service execution. Multiple modifications apply in registration order, each receiving the previous output.
§Examples
let stack = (
Intercept::layer()
.modify_output(|output: String| output.trim().to_string())
.modify_output(|output| format!("Result: {}", output)),
Execute::new(|input: String| async move { input }),
);
let service = stack.into_service();
let response = service.execute("input".to_string()).await;Trait Implementations§
Source§impl<In: Clone, Out: Clone> Clone for InterceptLayer<In, Out>
impl<In: Clone, Out: Clone> Clone for InterceptLayer<In, Out>
Source§fn clone(&self) -> InterceptLayer<In, Out>
fn clone(&self) -> InterceptLayer<In, Out>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<In, Out> Debug for InterceptLayer<In, Out>
impl<In, Out> Debug for InterceptLayer<In, Out>
Auto Trait Implementations§
impl<In, Out> Freeze for InterceptLayer<In, Out>
impl<In, Out> !RefUnwindSafe for InterceptLayer<In, Out>
impl<In, Out> Send for InterceptLayer<In, Out>
impl<In, Out> Sync for InterceptLayer<In, Out>
impl<In, Out> Unpin for InterceptLayer<In, Out>
impl<In, Out> !UnwindSafe for InterceptLayer<In, Out>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more