2个版本

0.0.1 2024年4月21日
0.0.0 2024年2月26日

64#actor-framework

Download history 1/week @ 2024-05-28

114 每月下载

MIT/Apache

17KB
408 代码行

Shakespeare

Version Build release date codecov Licence Downloads

Shakespeare是一个用Rust编写的演员框架,它侧重于人体工程学和可扩展性,同时保持高性能。

它的主要特性包括

  • 多态演员 - 在莎士比亚中,演员的接口被作为一个一级考虑因素,允许代码在动态选择的演员上工作是一个主要用例。
  • 丰富的接口 - 一个演员的单个接口可以支持任意数量的方法,而无需比等效特质定义更多的样板代码。
  • 静态验证 - 大多数功能都是由过程宏实现的,最小化了直接运行时开销,并在不牺牲静态类型检查的情况下为优化器提供了更多可见性。
  • 互操作性 - 将演员链接到更广泛的异步代码生态系统中设计得很容易。

示例

use tokio::sync::mpsc::*;

#[shakespeare::actor]
mod Actor {
    struct ActorState {
        sender: UnboundedSender<usize>,
    }
    #[shakespeare::performance(canonical)]
    impl BasicRole for ActorState {
        fn speak(&mut self, val: usize) {
            self.sender.send(val).unwrap();
        }
    }
}

#[tokio::test]
async fn main() {
    let (sender, mut recv) = tokio::sync::mpsc::unbounded_channel();
    let state = ActorState { sender };
    let shakespeare::ActorSpawn { actor, .. } = ActorState::start(state);
    actor.speak(42).await.expect("Error sending");
    assert_eq!(recv.recv().await.unwrap(), 42);
}

许可证

根据您的选择,受Apache许可证,版本2.0MIT许可证的许可。

除非您明确说明,否则您提交的任何有意包含在此包中的贡献,根据Apache-2.0许可证的定义,均应按上述方式双重许可,而无需任何附加条款或条件。

依赖关系

~4–11MB
~106K SLoC