Expand description
§act-zero
An actor system for Rust, designed with several goals in mind:
- No boilerplate.
- Ergonomic.
- Supports standard trait-based static and dynamic polymorphism.
- Embraces async/await.
- Executor agnostic.
Very little code is required to get started:
use std::error::Error;
use futures::executor::LocalPool;
use act_zero::*;
struct SimpleGreeter {
number_of_greets: i32,
}
impl Actor for SimpleGreeter {}
impl SimpleGreeter {
async fn greet(&mut self, name: String) -> ActorResult<String> {
self.number_of_greets += 1;
Produces::ok(format!(
"Hello, {}. You are number {}!",
name, self.number_of_greets
))
}
}
fn main() -> Result<(), Box<dyn Error>> {
let mut pool = LocalPool::new();
let spawner = pool.spawner();
pool.run_until(async move {
let actor_ref = Addr::new(
&spawner,
SimpleGreeter {
number_of_greets: 0,
},
)?;
let greeting = call!(actor_ref.greet("John".into())).await?;
println!("{}", greeting);
let greeting = call!(actor_ref.greet("Emma".into())).await?;
println!("{}", greeting);
Ok(())
})
}
For mixing traits and actors, it’s recommended to use the async_trait
crate
to allow using async methods in traits.
Modules§
- Contains integrations with specific runtimes
- Functionality related to timers.
Macros§
- Sends a method call to be executed by the actor, and returns a future that can be awaited to get back the result.
- Sends a method call to be executed by the actor.
- Converts an
Addr<T>
orWeakAddr<T>
to anAddr<dyn Trait>
orWeakAddr<dyn Trait>
.
Structs§
- A strong reference to a spawned actor. Actors can be spawned using
Addr::new
. - A future which completes upon termination of an actor.
- A weak reference to a spawned actor.
Enums§
- A concrete type similar to a
BoxFuture<'static, Result<T, oneshot::Canceled>>
, but without requiring an allocation if the value is immediately ready. This type implements theFuture
trait and can be directlyawait
ed.
Traits§
- Trait implemented by all actors. This trait is defined using the
#[async_trait]
attribute: - Trait provides methods for spawning futures onto an actor. Implemented by
Addr
andWeakAddr
alike. - Implemented by addresses and references to addresses
- Actor methods may return any type implementing this trait.
Type Aliases§
- The type of error returned by an actor method.
- Short alias for a
Result<Produces<T>, ActorError>
.