5 个版本 (3 个重大更改)
0.7.1 | 2020 年 6 月 4 日 |
---|---|
0.7.0 | 2020 年 6 月 3 日 |
0.6.6 | 2020 年 6 月 2 日 |
0.2.0 | 2020 年 2 月 20 日 |
0.1.0 | 2020 年 2 月 18 日 |
在 #async-std 中排名 114
每月下载量 299
在 3 个 crate 中使用(通过 xactor)
5KB
58 行
Xactor 是一个基于 async-std 的 Rust 协程框架
文档
功能
- 异步协程。
- 本地环境中的协程通信。
- 使用 futures 进行异步消息处理。
- 类型化消息(无
Any
类型)。允许泛型消息。
示例
use xactor::*;
#[message(result = "String")]
struct ToUppercase(String);
struct MyActor;
impl Actor for MyActor {}
#[async_trait::async_trait]
impl Handler<ToUppercase> for MyActor {
async fn handle(&mut self, _ctx: &mut Context<Self>, msg: ToUppercase) -> String {
msg.0.to_uppercase()
}
}
#[xactor::main]
async fn main() -> Result<()> {
// Start actor and get its address
let mut addr = MyActor.start().await?;
// Send message `ToUppercase` to actor via addr
let res = addr.call(ToUppercase("lowercase".to_string())).await?;
assert_eq!(res, "LOWERCASE");
Ok(())
}
性能
https://github.com/sunli829/xactor-benchmarks
安装
Xactor 需要 userland 上的 async-trait。
安装 cargo add 后,运行
$ cargo add xactor
$ cargo add async-trait
我们还提供了 tokio 运行时,而不是 async-std。要使用它,您需要激活 runtime-tokio
并禁用默认功能。
您可以按照以下方式编辑您的 Cargo.toml
xactor = { version = "x.x.x", features = ["runtime-tokio"], default-features = false }
参考
依赖
~1.5MB
~34K SLoC