pub trait Effect<B>: Sendwhere
    B: EventSourcedBehavior + Send + Sync + 'static,{
    // Required method
    fn process<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>(
        &'life0 mut self,
        behavior: &'life1 B,
        handler: &'life2 mut (dyn Handler<B::Event> + Send),
        entities: &'life3 mut (dyn EntityOps<B> + Send + Sync),
        entity_id: &'life4 EntityId,
        last_seq_nr: &'life5 mut u64,
        prev_result: Result
    ) -> Pin<Box<dyn Future<Output = Result> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait,
             'life4: 'async_trait,
             'life5: 'async_trait;
}
Expand description

The trait that effect types implement.

Required Methods§

source

fn process<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>( &'life0 mut self, behavior: &'life1 B, handler: &'life2 mut (dyn Handler<B::Event> + Send), entities: &'life3 mut (dyn EntityOps<B> + Send + Sync), entity_id: &'life4 EntityId, last_seq_nr: &'life5 mut u64, prev_result: Result ) -> Pin<Box<dyn Future<Output = Result> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, 'life5: 'async_trait,

Consume the effect asynchronously. This operation may be performed multiple times, but only the first time is expected to perform the effect.

Implementors§

source§

impl<B> Effect<B> for PersistEvent<B>where B: EventSourcedBehavior + Send + Sync + 'static, B::State: Send, B::Event: Send,

source§

impl<B> Effect<B> for Unhandled<B>where B: EventSourcedBehavior + Send + Sync + 'static,

source§

impl<B, F, R> Effect<B> for Then<B, F, R>where B: EventSourcedBehavior + Send + Sync + 'static, B::State: Send + Sync, F: FnOnce(&B, Option<&B::State>, Result) -> R + Send, R: Future<Output = Result> + Send,

source§

impl<B, F, R> Effect<B> for ThenPersistEvent<B, F, R>where B: EventSourcedBehavior + Send + Sync + 'static, B::State: Send + Sync, B::Event: Send, F: FnOnce(&B, Option<&B::State>, Result) -> R + Send, R: Future<Output = Result<Option<B::Event>, Error>> + Send,

source§

impl<B, F, R, T> Effect<B> for ThenReply<B, F, R, T>where B: EventSourcedBehavior + Send + Sync + 'static, B::State: Send + Sync, F: FnOnce(&B, Option<&B::State>, Result) -> R + Send, R: Future<Output = ReplyResult<T>> + Send, T: Send,

source§

impl<B, L, R> Effect<B> for And<B, L, R>where B: EventSourcedBehavior + Send + Sync + 'static, B::State: Send, L: Effect<B>, R: Effect<B>,

source§

impl<B, T> Effect<B> for Reply<B, T>where B: EventSourcedBehavior + Send + Sync + 'static, T: Send,