2 个版本
0.9.10 | 2022年5月30日 |
---|---|
0.9.0 | 2022年5月12日 |
#947 in 异步
51KB
1K SLoC
XTor:一个异步Actor框架处理程序。
关键特性
- 小巧:非常小的代码库
- 异步:允许你在Actor中编写异步代码
- 功能齐全:我们内置了如
Supervisor
Broker
Caller
等类型 - 既动态又快速:有类型消息和弱类型事件。
用法
将 xtor
添加到你的库中
cargo add xtor
编写一些代码
use anyhow::Result;
use async_trait::async_trait;
use xtor::actor::{context::Context, message::Handler, runner::Actor};
// first define actor
struct HelloActor;
impl Actor for HelloActor {}
// then define message
#[xtor::message(result = "()")]
#[derive(Debug)]
struct Hello;
// then impl the handler
#[async_trait]
impl Handler<Hello> for HelloActor {
async fn handle(&self, _ctx: &Context, msg: Hello) -> Result<()> {
println!("{:?} received", &msg);
Ok(())
}
}
// main will finish when all actors died out.
#[xtor::main]
async fn main() -> Result<()> {
let hello_actor = HelloActor;
let hello_actor_address = hello_actor.spawn().await?;
hello_actor_address.call::<HelloActor, Hello>(Hello).await
}
项目结构
src/actor/*
用于纯异步Actor实现src/utils/*
用于工具、特性和默认实现,例如DefaultBroker
DefaultSupervisor
Service
参考
依赖
~4–12MB
~109K SLoC