pub struct EventBus { /* private fields */ }Expand description
Event bus that can emit events and register event handlers
The event bus is responsible for managing event handlers and emitting events to them. It provides a simple way to register and unregister handlers, and to emit events to all registered handlers.
§Examples
struct MyHandler;
#[async_trait]
impl EventHandler for MyHandler {
async fn handle_event(&self, event: &Event) -> Result<(), Error> {
// Handle the event...
Ok(())
}
}
let mut event_bus = EventBus::default();
event_bus.register(Arc::new(MyHandler));
event_bus.emit(&Event::UserCreated(User::builder().id(UserId::new("test")).build().unwrap())).await;Implementations§
Source§impl EventBus
impl EventBus
Sourcepub async fn register(&self, handler: Arc<dyn EventHandler>)
pub async fn register(&self, handler: Arc<dyn EventHandler>)
Register an event handler with the event bus
§Examples
struct MyHandler;
#[async_trait]
impl EventHandler for MyHandler {
async fn handle_event(&self, event: &Event) -> Result<(), Error> {
// Handle the event...
Ok(())
}
}
let mut event_bus = EventBus::default();
event_bus.register(Arc::new(MyHandler));Trait Implementations§
Auto Trait Implementations§
impl Freeze for EventBus
impl !RefUnwindSafe for EventBus
impl Send for EventBus
impl Sync for EventBus
impl Unpin for EventBus
impl !UnwindSafe for EventBus
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.