5个版本 (3个重大更新)
0.4.0 | 2021年1月13日 |
---|---|
0.3.0 | 2020年10月13日 |
0.2.1 | 2020年8月30日 |
0.2.0 | 2020年7月19日 |
0.1.0 | 2020年7月11日 |
#1356 在 异步
每月314次下载
在 3 crate 中使用
57KB
1K SLoC
act-zero
针对Rust设计的actor系统,有以下几个目标
- 无样板代码。
- 人体工程学设计。
- 支持基于标准特质的静态和动态多态。
- 支持async/await。
- 无执行器限制。
开始使用只需要非常少的代码
use std::error::Error;
use futures::executor::LocalPool;
use act_zero::*;
struct SimpleGreeter {
number_of_greets: i32,
}
impl Actor for SimpleGreeter {}
impl SimpleGreeter {
async fn greet(&mut self, name: String) -> ActorResult<String> {
self.number_of_greets += 1;
Produces::ok(format!(
"Hello, {}. You are number {}!",
name, self.number_of_greets
))
}
}
fn main() -> Result<(), Box<dyn Error>> {
let mut pool = LocalPool::new();
let spawner = pool.spawner();
pool.run_until(async move {
let actor_ref = Addr::new(
&spawner,
SimpleGreeter {
number_of_greets: 0,
},
)?;
let greeting = call!(actor_ref.greet("John".into())).await?;
println!("{}", greeting);
let greeting = call!(actor_ref.greet("Emma".into())).await?;
println!("{}", greeting);
Ok(())
})
}
查看“examples
”文件夹以获取更多使用示例。
依赖项
~1–12MB
~142K SLoC