#events #事件处理 #事件系统 #延迟 #立即 #调度 #监听器

eventsys

一个用于调度和处理事件的库。事件可以以延迟和/或立即的方式处理。

2 个版本

0.1.1 2024 年 5 月 13 日
0.1.0 2024 年 3 月 21 日

#3 in #监听器

MIT 许可证

44KB
887 代码行,不包括注释

EventSys

Rust

这是一个仍在开发中的项目,不适用于生产环境。

一个用于调度和处理事件的库。事件可以以延迟和/或立即的方式处理。

事件可以被

  • 通过事件监听器处理: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