act-zero

An actor system for Rust, designed with several goals in mind:

Very little code is required to get started:

```rust use std::error::Error;

use futures::executor::LocalPool; use act_zero::*;

struct SimpleGreeter { numberofgreets: i32, }

impl Actor for SimpleGreeter {}

impl SimpleGreeter { async fn greet(&mut self, name: String) -> ActorResult { self.numberofgreets += 1; Produces::ok(format!( "Hello, {}. You are number {}!", name, self.numberofgreets )) } }

fn main() -> Result<(), Box> { let mut pool = LocalPool::new(); let spawner = pool.spawner(); pool.rununtil(async move { let actorref = Addr::new( &spawner, SimpleGreeter { numberofgreets: 0, }, )?;

    let greeting = call!(actor_ref.greet("John".into())).await?;
    println!("{}", greeting);

    let greeting = call!(actor_ref.greet("Emma".into())).await?;
    println!("{}", greeting);
    Ok(())
})

} ```

See the examples folder for more varied uses.