2个版本
0.0.1 | 2024年4月21日 |
---|---|
0.0.0 | 2024年2月26日 |
64 在 #actor-framework
114 每月下载
17KB
408 代码行
Shakespeare
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.0或MIT许可证的许可。
除非您明确说明,否则您提交的任何有意包含在此包中的贡献,根据Apache-2.0许可证的定义,均应按上述方式双重许可,而无需任何附加条款或条件。
依赖关系
~4–11MB
~106K SLoC