Expand description
Absinthe
Absinthe is a library that allows you to create actors in Rust, and communicate with them using async messages. It provides Actor Model primitives, and a super-macro to easily create actors. Just write your Rust code, and Absinthe will handle the rest.
Features
- Actor Model - Absinthe provides an Actor trait, and a super-macro to easily create actors.
- Async Messaging - Absinthe provides a Courier trait, and macros to easily send messages to actors.
- Async Tasks - Absinthe provides a spawn function to spawn actors as async tasks.
- Async Channels - Absinthe uses async channels to communicate with actors.
- Actor Functions - actor! macro can be used to ‘actorize’ functions, implementing the Actor trait and spawning constructors.
- Actor Structs - actor! macro can be used to ‘actorize’ structs, implementing the Actor trait and message routing.
Example
use absinthe::prelude::*;
actor! {
async fn add(a: u32, b: u32) -> u32 {
a + b
}
}
#[tokio::main]
async fn main() {
let adder = add();
assert_eq!(send!(adder, 1, 2).await, 3);
}
Re-exports
pub use actor::Actor;
pub use actor::ActorHandle;
pub use actor::spawn;
pub use crate::msg::Courier;
Modules
- Actor traits & primitives.
- Message traits & primitives.
- Absinthe prelude, providing a good starter pack to start writing actors.
Macros
- Provides the actor! macro, which ‘actorizes’ functions & structs. Also provides messaging macros, such as send! and notify! Create an actor. Can be used on a struct or a function. If actorizing a struct, the struct must have an
impl
block. Theimpl
block must have the same name as the struct. - Provides the actor! macro, which ‘actorizes’ functions & structs. Also provides messaging macros, such as send! and notify! Send a message to an actor, and don’t wait for a response.
- Provides the actor! macro, which ‘actorizes’ functions & structs. Also provides messaging macros, such as send! and notify! Send a message to an actor, and wait for a response.