EffectStoreWithMiddleware

Struct EffectStoreWithMiddleware 

Source
pub struct EffectStoreWithMiddleware<S, A, E, M>
where A: Action, M: Middleware<A>,
{ /* private fields */ }
Expand description

An effect store with middleware support.

Wraps an EffectStore and calls middleware hooks before and after each dispatch. The middleware receives action references and the state change indicator, but not the effects.

§Example

use tui_dispatch::{DispatchResult, EffectStoreWithMiddleware};
use tui_dispatch::debug::ActionLoggerMiddleware;

let middleware = ActionLoggerMiddleware::with_default_log();
let mut store = EffectStoreWithMiddleware::new(
    State::default(),
    reducer,
    middleware,
);

let result = store.dispatch(Action::Something);
// Middleware logged the action
// result.effects contains any effects to process

Implementations§

Source§

impl<S, A, E, M> EffectStoreWithMiddleware<S, A, E, M>
where A: Action, M: Middleware<A>,

Source

pub fn new(state: S, reducer: EffectReducer<S, A, E>, middleware: M) -> Self

Create a new effect store with middleware.

Source

pub fn state(&self) -> &S

Get a reference to the current state.

Source

pub fn state_mut(&mut self) -> &mut S

Get a mutable reference to the state.

Source

pub fn middleware(&self) -> &M

Get a reference to the middleware.

Source

pub fn middleware_mut(&mut self) -> &mut M

Get a mutable reference to the middleware.

Source

pub fn dispatch(&mut self, action: A) -> DispatchResult<E>

Dispatch an action through middleware and store.

Calls middleware.before(), then store.dispatch(), then middleware.after() with the state change indicator.

Auto Trait Implementations§

§

impl<S, A, E, M> Freeze for EffectStoreWithMiddleware<S, A, E, M>
where M: Freeze, S: Freeze,

§

impl<S, A, E, M> RefUnwindSafe for EffectStoreWithMiddleware<S, A, E, M>

§

impl<S, A, E, M> Send for EffectStoreWithMiddleware<S, A, E, M>
where M: Send, S: Send, E: Send,

§

impl<S, A, E, M> Sync for EffectStoreWithMiddleware<S, A, E, M>
where M: Sync, S: Sync, A: Sync, E: Sync,

§

impl<S, A, E, M> Unpin for EffectStoreWithMiddleware<S, A, E, M>
where M: Unpin, S: Unpin, A: Unpin, E: Unpin,

§

impl<S, A, E, M> UnwindSafe for EffectStoreWithMiddleware<S, A, E, M>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more