Crates.io | shakespeare |
lib.rs | shakespeare |
version | 0.0.1 |
source | src |
created_at | 2024-02-26 23:54:22.844925 |
updated_at | 2024-04-21 20:52:56.66655 |
description | An actor framework |
homepage | |
repository | https://github.com/ejmount/shakespeare |
max_upload_size | |
id | 1154317 |
size | 34,098 |
Shakespeare is an actor framework written in Rust that focuses on ergonomics and extensibility while maintaining high performance.
Its most significant features include:
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);
}
Licensed under either of Apache Licence, Version 2.0 or MIT licence at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 licence, shall be dual licensed as above, without any additional terms or conditions.