Struct EventBus

Source
pub struct EventBus { /* private fields */ }
Expand description

Event bus

Asynchronously handles events of arbitrary Any type by passing them in-order to a set of registered async ‘handler’ functions. Handlers are processes in an unordered fashion, but an event is fully handled by all handlers until the next event in the posted event stream is processed.

Implementations§

Source§

impl EventBus

Source

pub fn new() -> Self

Create a new EventBus

Source

pub async fn startup(&self) -> Result<(), StartupLockAlreadyStartedError>

Start up the EventBus background processor

Source

pub async fn shutdown(&self)

Shut down EventBus background processing This unregisters all handlers as well and discards any unprocessed events

Source

pub fn post<E: Any + Send + Sync + 'static>( &self, evt: E, ) -> Result<(), StartupLockNotStartedError>

Post an event to be processed

Source

pub fn subscribe<E: Any + Send + Sync + 'static, F: Fn(Arc<E>) -> SendPinBoxFuture<()> + Send + Sync + 'static>( &self, handler: F, ) -> EventBusSubscription

Subscribe a handler to handle all posted events of a particular type Returns an subscription object that can be used to cancel this specific subscription if desired

Source

pub fn unsubscribe(&self, sub: EventBusSubscription)

Given a subscription object returned from subscribe, removes the subscription for the EventBus. The handler will no longer be called.

Source

pub fn len(&self) -> usize

Returns the number of unprocessed events remaining

Source

pub fn is_empty(&self) -> bool

Checks if the bus has no events

Trait Implementations§

Source§

impl Clone for EventBus

Source§

fn clone(&self) -> EventBus

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EventBus

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for EventBus

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V