2 个版本
0.1.1 | 2024 年 5 月 13 日 |
---|---|
0.1.0 | 2024 年 3 月 21 日 |
#3 in #监听器
44KB
887 代码行,不包括注释
EventSys
这是一个仍在开发中的项目,不适用于生产环境。
一个用于调度和处理事件的库。事件可以以延迟和/或立即的方式处理。
事件可以被
- 通过事件监听器处理:
EventBackend::register_listener()
- 注册:
EventBackend::register_store()
要触发新事件,请调用 EventBackend::new_event()
。
使用 EventBackend
使用 EventBackend
通常分为两个阶段
- 创建一个新的
EventBackend
并注册所有事件 - 使用
EventBackend
触发新事件
可以在不需要对 EventBackend
进行可变访问的情况下触发事件,而注册新事件类型则需要可变访问。
示例
示例监听器
use eventsys::EventBackend;
// create event system, events can be a max size of 16 bytes
let mut system = EventBackend::<16>::new();
// create listener to be called on event trigger
let listener = |event: &u32| {
// handle event
};
// register listener for event type
system.register_listener::<u32>(listener).unwrap();
// trigger event
system.new_event::<u32>(123);
示例批处理
use eventsys::{EventBackend, SlotType};
// create event system, events can be a max size of 16 bytes
let mut system = EventBackend::<16>::new();
// register listener for event type
system.register_store::<u32>(SlotType::All).unwrap();
// trigger event
system.new_event::<u32>(123);
system.new_event::<u32>(456);
system.new_event::<u32>(789);
// query batch
let event_iter = system.query::<u32>().unwrap();
for event in event_iter {
// handle event
}
许可证
此项目采用 MIT 许可证。
依赖项
~39KB