pub trait Listener<E>:
Send
+ Sync
+ 'staticwhere
E: Event,{
// Required method
fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
event: &'life1 E,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait;
// Provided methods
fn name(&self) -> &'static str { ... }
fn should_stop_propagation(&self) -> bool { ... }
}Expand description
A listener that handles events of type E.
Listeners contain the logic that should run when an event is dispatched. They can be synchronous or asynchronous.
§Example
use ferro_events::{Event, Listener, Error, async_trait};
#[derive(Clone)]
struct UserRegistered { email: String }
impl Event for UserRegistered {
fn name(&self) -> &'static str { "UserRegistered" }
}
struct SendWelcomeEmail;
#[async_trait]
impl Listener<UserRegistered> for SendWelcomeEmail {
async fn handle(&self, event: &UserRegistered) -> Result<(), Error> {
println!("Welcome, {}!", event.email);
Ok(())
}
}Required Methods§
Sourcefn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
event: &'life1 E,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
event: &'life1 E,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Handle the event.
This method is called when the event is dispatched. It receives an immutable reference to the event data.
Provided Methods§
Sourcefn should_stop_propagation(&self) -> bool
fn should_stop_propagation(&self) -> bool
Whether this listener should stop propagation to other listeners.
If this returns true after handling, no further listeners will
be called for this event.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".