代码拉取完成,页面将自动刷新
msg_bus 异步事件消息处理总线,类似window 消息处理机制,通过注册消息,发送消息,消息响应。可以应用在多线程之间消息的传递。支持自定义消息数据类型,使用简单。使用示例如下。详细的例子参见 examples 目录。
#[async_trait]
impl MessageHandle<String> for MsgRunner{
async fn handle_msg(&self, msg: MessageData<String>) ->std::result::Result<(),Box<dyn std::error::Error>>{
match msg {
MessageData::Data(s) => {
println!("--- i am handle massage {}",s);
},
MessageData::None =>{
println!("--- i am handle massage {}","None");
}
}
Ok(())
}
}
#[async_std::test]
async fn test_register() {
let bus = MsgBus::<String>::new();
let ru = MsgRunner{};
bus.regist_msg(1, Box::new(ru)).await;
let msg1 =Message{id:1,data:MessageData::Data("aaaaa".to_string())};
bus.post_msg(msg1).await.unwrap();
let msg2 =Message{id:1,data:MessageData::Data("bbb".to_string())};
bus.post_msg(msg2).await.unwrap();
// 等候下异步执行线程,输出结果;
sleep(std::time::Duration::from_secs(5));
println!("Done!");
}
欢迎大家共同完善,联系作者,请发邮件 2175318066@qq.com
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。