3 个版本

0.4.2 2023年9月9日
0.4.1 2023年9月9日
0.3.0 2023年9月9日
0.2.1 2023年9月8日
0.1.1 2023年9月6日

#509 in 异步

每月 44 次下载
winit-runtime 中使用

MIT 许可证

12KB
240

EventSource

零成本非缓冲异步事件发射器

此 crate 是 no_std

功能

  1. 非缓冲,即时事件分发
  2. 零成本添加、删除监听器
  3. 高阶事件类型
  4. 传播控制

示例

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);
}

输出

Event emiited with value: 35!
Output: 35

许可证

MIT

依赖

~0.6–6.5MB
~14K SLoC