pub struct AsyncEventEmitter {
pub listeners: DashMap<String, Vec<AsyncListener>>,
}
Fields§
§listeners: DashMap<String, Vec<AsyncListener>>
Implementations§
Source§impl AsyncEventEmitter
impl AsyncEventEmitter
pub fn new() -> Self
Sourcepub async fn emit<'a, T>(&self, event: &str, value: T) -> Result<()>
pub async fn emit<'a, T>(&self, event: &str, value: T) -> Result<()>
Emits an event of the given parameters and executes each callback that is listening to that event asynchronously by spawning a task for each callback.
§Example
use async_event_emitter::AsyncEventEmitter;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let event_emitter = AsyncEventEmitter::new();
// Emits the <"Some event"> event and a value <"Hello programmer">
// The value can be of any type as long as it implements the serde Serialize trait
event_emitter.emit("Some event", "Hello programmer!").await;
Ok(())
}
Sourcepub fn remove_listener(&self, id_to_delete: &str) -> Option<String>
pub fn remove_listener(&self, id_to_delete: &str) -> Option<String>
Removes an event listener with the given id
§Example
use async_event_emitter::AsyncEventEmitter;
let event_emitter = AsyncEventEmitter::new();
let listener_id =
event_emitter.on("Some event", |value: ()| async { println!("Hello world!") });
println!("{:?}", event_emitter.listeners);
// Removes the listener that we just added
event_emitter.remove_listener(&listener_id);
Sourcepub fn on_limited<F, T, C>(
&self,
event: &str,
limit: Option<u64>,
callback: C,
) -> String
pub fn on_limited<F, T, C>( &self, event: &str, limit: Option<u64>, callback: C, ) -> String
Adds an event listener that will only execute the listener x amount of times - Then the listener will be deleted. Returns the id of the newly added listener.
§Example
use async_event_emitter::AsyncEventEmitter;
#[tokio::main]
async fn main() {
let event_emitter = AsyncEventEmitter::new();
// Listener will be executed 3 times. After the third time, the listener will be deleted.
event_emitter.on_limited("Some event", Some(3), |value: ()| async{ println!("Hello world!")});
event_emitter.emit("Some event", ()).await; // 1 >> "Hello world!"
event_emitter.emit("Some event", ()).await; // 2 >> "Hello world!"
event_emitter.emit("Some event", ()).await; // 3 >> "Hello world!"
event_emitter.emit("Some event", ()).await; // 4 >> <Nothing happens here because listener was deleted after the 3rd call>
}
Sourcepub fn once<F, T, C>(&self, event: &str, callback: C) -> String
pub fn once<F, T, C>(&self, event: &str, callback: C) -> String
Adds an event listener that will only execute the callback once - Then the listener will be deleted. Returns the id of the newly added listener.
§Example
use async_event_emitter::AsyncEventEmitter;
let event_emitter = AsyncEventEmitter::new();
event_emitter.once("Some event", |value: ()| async {println!("Hello world!")});
event_emitter.emit("Some event", ()); // First event is emitted and the listener's callback is called once
// >> "Hello world!"
event_emitter.emit("Some event", ());
// >> <Nothing happens here since listener was deleted>
Sourcepub fn on<F, T, C>(&self, event: &str, callback: C) -> String
pub fn on<F, T, C>(&self, event: &str, callback: C) -> String
Adds an event listener with a callback that will get called whenever the given event is emitted. Returns the id of the newly added listener.
§Example
use async_event_emitter::AsyncEventEmitter;
let event_emitter = AsyncEventEmitter::new();
// This will print <"Hello world!"> whenever the <"Some event"> event is emitted
// The type of the `value` parameter for the closure MUST be specified and, if you plan to use the `value`, the `value` type
// MUST also match the type that is being emitted (here we just use a throwaway `()` type since we don't care about using the `value`)
event_emitter.on("Some event", |value: ()| async { println!("Hello world!")});
Trait Implementations§
Source§impl Clone for AsyncEventEmitter
impl Clone for AsyncEventEmitter
Source§fn clone(&self) -> AsyncEventEmitter
fn clone(&self) -> AsyncEventEmitter
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for AsyncEventEmitter
impl Debug for AsyncEventEmitter
Source§impl Default for AsyncEventEmitter
impl Default for AsyncEventEmitter
Source§fn default() -> AsyncEventEmitter
fn default() -> AsyncEventEmitter
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for AsyncEventEmitter
impl !RefUnwindSafe for AsyncEventEmitter
impl Send for AsyncEventEmitter
impl Sync for AsyncEventEmitter
impl Unpin for AsyncEventEmitter
impl !UnwindSafe for AsyncEventEmitter
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