# rust_event
Rust 轻量化异步事件库
> 作者: InotArt
这是一个基于tokio制作的一个轻量化异步事件库,安装方式:
> cargo add rust_event
## 使用方法:
```rust
rust_event::event!(
#[doc = "plugin message event"]
PluginMessageEvent(String, Vec<u8>)
);
pub async fn handle_plugin_message(player:String, data:Vec<u8>) {
println!("[PluginMessage] {}: {:?}",player,data);
}
#[tokio::main]
pub async fn main() -> Result<(), anyhow::Error> {
rust_event::event_register_global_async!(PluginMessageEvent, handle_plugin_message,(a,b)); rust_event::event_emit_global!(PluginMessageEvent,("Earth Online".to_string(), vec![42])); tokio::time::sleep(std::time::Duration::from_secs(1)).await; Ok(())
}
```
```rust
rust_event::event!(
#[doc = "plugin message event"]
PluginMessageEvent(String, Vec<u8>)
);
pub async fn handle_plugin_message(player:String, data:Vec<u8>) {
println!("[PluginMessage] {}: {:?}",player,data);
}
#[tokio::main]
pub async fn main() -> Result<(), anyhow::Error> {
let bus = rust_event::AsyncEventBus::new();
rust_event::event_register_async!(bus,PluginMessageEvent, handle_plugin_message,(a,b)); bus.emit::<PluginMessageEvent>(("Earth Online".to_string(), vec![42])).await; rust_event::event_emit!(bus,PluginMessageEvent,("Earth Online".to_string(), vec![42])); tokio::time::sleep(std::time::Duration::from_secs(1)).await; Ok(())
}
```