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 processImplementations§
Source§impl<S, A, E, M> EffectStoreWithMiddleware<S, A, E, M>where
A: Action,
M: Middleware<A>,
impl<S, A, E, M> EffectStoreWithMiddleware<S, A, E, M>where
A: Action,
M: Middleware<A>,
Sourcepub fn new(state: S, reducer: EffectReducer<S, A, E>, middleware: M) -> Self
pub fn new(state: S, reducer: EffectReducer<S, A, E>, middleware: M) -> Self
Create a new effect store with middleware.
Sourcepub fn middleware(&self) -> &M
pub fn middleware(&self) -> &M
Get a reference to the middleware.
Sourcepub fn middleware_mut(&mut self) -> &mut M
pub fn middleware_mut(&mut self) -> &mut M
Get a mutable reference to the middleware.
Sourcepub fn dispatch(&mut self, action: A) -> DispatchResult<E>
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>
impl<S, A, E, M> RefUnwindSafe for EffectStoreWithMiddleware<S, A, E, M>
impl<S, A, E, M> Send for EffectStoreWithMiddleware<S, A, E, M>
impl<S, A, E, M> Sync for EffectStoreWithMiddleware<S, A, E, M>
impl<S, A, E, M> Unpin for EffectStoreWithMiddleware<S, A, E, M>
impl<S, A, E, M> UnwindSafe for EffectStoreWithMiddleware<S, A, E, M>
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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