24个版本

0.6.0 2024年2月2日
0.5.2 2022年6月13日
0.5.1 2021年3月23日
0.5.0-beta.52020年9月13日
0.2.6 2020年3月18日

异步 中排名 151

Download history 277/week @ 2024-03-11 158/week @ 2024-03-18 21/week @ 2024-03-25 233/week @ 2024-04-01 28/week @ 2024-04-08 50/week @ 2024-04-15 49/week @ 2024-04-22 52/week @ 2024-04-29 32/week @ 2024-05-06 29/week @ 2024-05-13 26/week @ 2024-05-20 51/week @ 2024-05-27 51/week @ 2024-06-03 73/week @ 2024-06-10 83/week @ 2024-06-17 69/week @ 2024-06-24

每月下载量 280
4 crates 中使用

MPL-2.0 许可协议

125KB
2.5K SLoC

Continuous integration docs.rs Matrix

xtra

一个小巧、快速且安全的actor框架。它基于Actix(版权和许可协议 在此)。

功能

  • 安全: xtra中没有不安全代码。
  • 小巧: xtra大约有2000行代码。
  • 轻量级: xtra依赖项很少,其中大部分都是轻量级的(除了futures)。
  • 异步 Handler 接口,允许使用 async/await 语法与 &mut self
  • 不依赖于自己的运行时,可以使用任何futures executor运行。为 Tokioasync-stdsmolwasm-bindgen-futures 提供方便的 spawn 函数。
  • 相当快。在我的开发机上,使用Tokio运行,从发送消息到处理并再次发送,不等待结果的时间为 <170ns。

示例

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");
    }
}

要查看更长的示例,请查看使用xtra和spaad在服务器上编写的聊天应用 Vertex

听起来很棒!我该如何使用它?

查看文档示例以开始使用!启用tokioasync_stdsmolwasm_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_sinkMessageChannel::into_sink
  • macros:启用Actor自定义推导宏。

最新破坏性更改

要查看每个版本的破坏性更改,请参阅此处。最新版本是0.6.0。

依赖关系

~0.8–13MB
~147K SLoC