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 异步
每月 499 次下载
13KB
158 代码行
atticus
: 在 tokio
中实现的一个简单的演员。
演员提供了一种在异步任务之间调用消息或请求的方法。这避免了需要使用对象的 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