1 个不稳定版本
0.6.0 | 2024年2月2日 |
---|
#7 在 #xtra
每月下载量 82
用于 xtra
3KB
xtra
一个轻量级、快速、安全的actor框架。它基于Actix(版权和许可证在此)。
特性
- 安全: xtra中没有不安全代码。
- 轻量级: xtra的代码量约为2000行。
- 轻量级: xtra的依赖项很少,其中大部分都是轻量级的(除了
futures
)。 - 异步
Handler
接口,允许使用async/
await
语法和&mut self
。 - 不依赖于自己的运行时,可以使用任何futures执行器。提供了针对Tokio、async-std、smol和wasm-bindgen-futures的方便的
spawn
函数。 - 相当快。在我的AMD Ryzen 3 3200G开发机上运行在Tokio上,从发送消息到处理并发送消息的时间为
。
示例
use xtra::prelude::*;
#[derive(Default, xtra::Actor)]
struct Printer {
times: usize,
}
struct Print(String);
impl Handler<Print> for Printer {
type Return = ();
async fn handle(&mut self, print: Print, _ctx: &mut Context<Self>) {
self.times += 1;
println!("Printing {}. Printed {} times so far.", print.0, self.times);
}
}
#[tokio::main]
async fn main() {
let addr = xtra::spawn_tokio(Printer::default(), None);
loop {
addr.send(Print("hello".to_string()))
.await
.expect("Printer should not be dropped");
}
}
有关更长的示例,请参阅Vertex,这是一个使用xtra和spaad在服务器上编写的聊天应用。
听起来很棒!我该如何使用它?
查看文档和示例以开始使用!建议启用tokio
、async_std
、smol
或wasm_bindgen
功能,以便启用一些便利的方法(例如xtra::spawn_tokio
)。您启用哪些功能将取决于您想要使用的执行器(查看它们的文档以了解更多信息)。如果您有任何问题,请随时提出问题或在Rust discord上发消息给我。
请注意,xtra
的MSRV为1.60.0。
Cargo功能
async_std
:启用与async-std的集成。smol
:启用与smol的集成。请注意,这需要smol 1.1,因为1.1相对于1.0有一个小的破坏性更改,导致xtra不能同时在1.0和1.1上编译。tokio
:启用与tokio的集成。wasm_bindgen
:启用与wasm-bindgen及其futures crate的集成。instrumentation
:添加对tracing
的依赖,并为actor的消息发送和处理创建跨度。sink
:添加Address::into_sink
和MessageChannel::into_sink
。macros
:启用Actor
自定义派生宏。
最新破坏性更改
要查看每个版本的破坏性更改,请参阅此处。最新版本是0.6.0。
依赖关系
~1.5MB
~36K SLoC