dispatch

Function dispatch 

Source
pub fn dispatch<T>(key: &str, event: T) -> Result<(), DispatchError>
where T: 'static + Send + Sync,
Expand description

事件分发函数

§执行流程

  1. 获取全局锁(阻塞直到获取成功)
  2. 在锁保护下进行匹配:遍历所有 action,找到优先级最高的匹配项
  3. 若无匹配,释放锁并返回错误
  4. 若匹配成功:
    • sync = false: 立即释放锁,然后执行函数(支持并发)
    • sync = true: 保持持有锁,执行函数,完成后自动释放(全局排他)

§类型约束

  • T: 'static + Send + Sync: 确保事件类型可以跨线程传递

§示例

#[derive(Clone)]
struct MyEvent { id: u64 }
 
#[action(regex = r"user/\d+", priority = 5, sync = false)]
fn handle_user(event: MyEvent) {
    println!("处理用户: {}", event.id);
}
 
dispatch("user/123", MyEvent { id: 123 })?;