3 个版本
0.4.2 | 2023年9月9日 |
---|---|
0.4.1 | 2023年9月9日 |
0.3.0 |
|
0.2.1 |
|
0.1.1 |
|
#509 in 异步
每月 44 次下载
在 winit-runtime 中使用
12KB
240 行
EventSource
零成本非缓冲异步事件发射器
此 crate 是 no_std
功能
- 非缓冲,即时事件分发
- 零成本添加、删除监听器
- 高阶事件类型
- 传播控制
示例
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