#事件 #事件系统 #并行

concurrent-event

一个并发调用事件处理器的事件系统

1 个不稳定版本

0.1.0 2020年7月5日

#35#事件系统

MIT/Apache

15KB
206 代码行

concurrent-event

一个用于 Rust 的并行调用事件处理器的事件系统。


lib.rs:

该软件包实现了一个事件,该事件以并发方式执行已注册的事件处理器。此外,每个处理器都被分配了一个ID,该ID在创建后可以用来引用。这允许为每个事件处理器关联状态。

该系统被设计为能够抵抗恶意代码。特别是,ID是随机分配的,具有足够的位数,难以猜测。因此,效率可能会受到影响。特别是ID的大小比顺序分配时要大。

重要提示

我们不提供任何保证,因为安全属性没有得到严格的验证。在没有进一步调查的情况下,请勿在关键系统中使用!

示例

这是一个使用自定义事件处理器的简单使用场景。

use concurrent_event::Event;
use concurrent_event::handler::EventHandler; 

struct Printer;

impl EventHandler<&str> for Printer {
    fn on_event(&mut self, arg: &str) {
        print!("{}", arg);
    }
}

let mut event = Event::<&str, Printer>::new();
event.emit("Hello, World!");

handler 包中,可以找到无状态和有状态事件处理器的默认实现,这些实现会在构建时接受一个闭包。

依赖项

~1.7–2.4MB
~42K SLoC