Crate act_zero

Source
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> or WeakAddr<T> to an Addr<dyn Trait> or WeakAddr<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 the Future trait and can be directly awaited.

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 and WeakAddr 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>.