#actor #channel #tokio #async

atticus

创建异步演员的最小 API

6 个版本

0.3.0 2024 年 4 月 18 日
0.2.2 2024 年 4 月 3 日
0.2.1 2024 年 3 月 28 日
0.2.0 2023 年 7 月 12 日
0.1.0 2023 年 5 月 3 日

#470 in 异步

Download history 431/week @ 2024-04-25 243/week @ 2024-05-02 249/week @ 2024-05-09 162/week @ 2024-05-16 136/week @ 2024-05-23 154/week @ 2024-05-30 64/week @ 2024-06-06 169/week @ 2024-06-13 109/week @ 2024-06-20 68/week @ 2024-06-27 263/week @ 2024-07-04 67/week @ 2024-07-11 210/week @ 2024-07-18 106/week @ 2024-07-25 141/week @ 2024-08-01 19/week @ 2024-08-08

每月 499 次下载

MIT/Apache

13KB
158 代码行

atticus: 在 tokio 中实现的一个简单的演员。

build crates.io Crates.io Downloads (recent)

演员提供了一种在异步任务之间调用消息或请求的方法。这避免了需要使用对象的 Arc<Mutex<T>> 实例来传递共享状态,以便可以使用通道交换数据。

演员旨在阐明所有权数据结构。

目标

该库的主要目标是提供在 tokio 运行时中可以使用的最基本或最小的演员实现。

将来可能会有其他运行时以及 no_std 支持的开发。

使用方法

通过实现 Actor 特性来创建演员。

use atticus::{Actor, actor};
use async_trait::async_trait;

struct IntToString;

#[async_trait]
impl Actor for IntToString {
    type Request = i32;
    type Response = String;
    async fn handle(&mut self, request: Self::Request) -> Option<Self::Response> {
        Some(request.to_string())
    }
}

#[tokio::main(flavor="current_thread")]
async fn main() {
    // Spawn the actor
    let handle = actor::run(IntToString{}, 1);

    // Send a request to convert 5 to String.
    let response = handle.requestor.request(5).await;

    assert!(response.is_ok());
    assert_eq!(response.unwrap(), Some(String::from("5")));
}

许可证

该项目许可协议为以下之一:

任选其一。

该项目的 SPDX 许可标识符为 MIT OR Apache-2.0

贡献

除非您明确声明,否则任何有意提交以包含在作品中并由您定义的 Apache-2.0 许可证的贡献,均应按上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~2.2–4MB
~63K SLoC