1 个不稳定版本
0.1.0 | 2020年7月5日 |
---|
#35 在 #事件系统
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