Coerce-rs
Coerce-rs is an asynchronous (async/await) Actor runtime for Rust. It allows for extremely simple yet powerful actor-based multithreaded application development.
async/await Actors
An actor is just another word for a unit of computation. It can have mutable state, it can receive messages and perform actions.
One caveat though.. It can only do one thing at a time. This can be useful because it can alleviate the need for thread synchronisation,
usually achieved by locking (using Mutex
, RwLock
etc).
How is this achieved in Coerce?
Coerce uses Tokio's MPSC channels (tokio::sync::mpsc::channel), every actor created spawns a task listening to messages from a
Receiver
, handling and awaiting the result of the message. Every reference (ActorRef<A: Actor>
) holds a Sender<M> where A: Handler<M>
, which can be cloned.
Actors can be stopped and actor references can be retrieved by ID (currently Uuid
) from anywhere in your application. Anonymous actors are automatically dropped (and Stopped
)
when all references are dropped. Tracked actors (using global fn new_actor
) must be stopped.
Example
;
pub async
Timer Example
;
;
pub async