Skip to content

storycraft/event-source

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EventSource

Zero cost non buffered async event emitter

This crate is no_std

Features

  1. Non buffered, immediate event dispatch
  2. Zero cost listener adding, removing
  3. Higher kinded event type
  4. Propagation control

Example

async fn main() {
    let source: Arc<EventSource!(&mut i32)> = Arc::new(EventSource::new());

    // imaginary function for spawning future in another thread
    spawn({
        let source = source.clone();
        async {
            let mut a = 35;
            emit!(source, &mut a);
        }
    });

    let mut output = 0;
    // Closure can contain reference!
    source.on(|value, flow| {
        println!("Event emiited with value: {}!", value);
        output = *value;

        // mark listener as finished
        flow.set_done();
    }).await;

    println!("Output: {}", output);
}

Output

Event emiited with value: 35!
Output: 35

License

MIT

About

Zero cost non buffered async event emitter

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages