Skip to main content

MessageMiddleware

Trait MessageMiddleware 

Source
pub trait MessageMiddleware<Message, State> {
    type Error;

    // Required method
    fn intercept(
        &mut self,
        state: &mut State,
        message: Message,
    ) -> Result<Message, Self::Error>;
}
Expand description

Intercepts an owned message with access to caller-defined state.

The message type determines the direction at compile time: middleware over FrontendMessage cannot accidentally return a BackendMessage, and vice versa.

Required Associated Types§

Source

type Error

An error which prevents the message from continuing through the chain.

Required Methods§

Source

fn intercept( &mut self, state: &mut State, message: Message, ) -> Result<Message, Self::Error>

Observes, mutates, or replaces one message.

§Errors

Returns a policy-defined error to stop message processing.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<Message, State, Error, F> MessageMiddleware<Message, State> for F
where F: FnMut(&mut State, Message) -> Result<Message, Error>,

Source§

type Error = Error

Source§

impl<Message, State, First, Second> MessageMiddleware<Message, State> for Then<First, Second>
where First: MessageMiddleware<Message, State>, Second: MessageMiddleware<Message, State>,

Source§

type Error = ChainError<<First as MessageMiddleware<Message, State>>::Error, <Second as MessageMiddleware<Message, State>>::Error>

Source§

impl<Message, State> MessageMiddleware<Message, State> for Identity