#actor #actix #tokio #async #async-trait

sampr

使用演员的消息传递框架

1 个不稳定版本

0.1.0 2023 年 6 月 26 日

#1622异步

自定义许可证

25KB
387

Rust 中的简单异步消息传递

sampr 包提供了一种受 actix 启发的消息传递框架。与后者不同,sampr 使用 Rust 的 async/await 语言功能来处理 futures。

概述

演员 通过为任意类型实现 Actor 特性来定义。一个 Actor 可以通过为特定消息实现 Handler<M> 特性来接收和处理消息。启动时,每个 Actor 都会以其 Context 的形式异步运行,作为单独的 tokio::task 的一部分。每当接收到消息时,都会调用相应的处理器函数。由于 Rust 在编写此文档时还不支持异步函数在特型中,因此 sampr 目前依赖于 async_trait

当前功能

  • 在演员之间发送消息并等待其结果。
  • 在演员的上下文中启动 futures 并等待其解决。
  • Stream 添加到演员的上下文中并等待其产生项目。
  • 停止演员,将对象移回调用者。

缺少的功能

  • 在演员之间发送消息而不会阻塞发送者的 Context,即一个接受回调的 .send() 函数(这已经可以通过启动一个任务来实现,但需要一些语法糖)。
  • 定时器,用于定期执行工作。

依赖项

~3–4.5MB
~80K SLoC