13 releases (8 breaking)
| 0.11.0 | Jul 31, 2025 |
|---|---|
| 0.10.0 | Aug 13, 2024 |
| 0.9.0 | May 31, 2024 |
| 0.8.3 | Feb 28, 2023 |
| 0.4.1 | Mar 4, 2021 |
#167 in Concurrency
84 downloads per month
Used in downtown
70KB
1K
SLoC
tonari-actor
This crate aims to provide a minimalist and high-performance actor framework for Rust with significantly less complexity than other frameworks like Actix.
In this framework, each Actor is its own OS-level thread. This makes debugging
noticeably simpler, and is suitably performant when the number of actors
is less than or equal to the number of CPU threads.
Example
use tonari_actor::{Actor, Context, System};
struct TestActor {}
impl Actor for TestActor {
type Error = ();
type Message = usize;
fn handle(&mut self, _context: &Context<Self>, message: Self::Message) -> Result<(), ()> {
println!("message: {}", message);
Ok(())
}
}
fn main() {
let mut system = System::new("default");
// will spin up a new thread running this actor
let addr = system.spawn(TestActor {}).unwrap();
// send messages to actors to spin off work...
addr.send(1usize).unwrap();
// ask the actors to finish and join the threads.
system.shutdown().unwrap();
}
Dependencies
- cargo
- rustc
Build
$ cargo build --release
Testing
$ cargo test
Code Format
The formatting options currently use nightly-only options.
$ cargo +nightly fmt
Code Linting
$ cargo clippy
Dependencies
~2MB
~32K SLoC