actix 0.5.7

Actor framework for Rust
Documentation
extern crate actix;
extern crate futures;
use futures::{future, Future};

use actix::msgs::{Execute, SystemExit};
use actix::prelude::*;

#[test]
fn test_execute() {
    let sys = System::new("test");
    assert_eq!(Arbiter::name(), "test");

    let addr = Arbiter::new("exec-test");

    Arbiter::handle().spawn(addr.send(Execute::new(|| Ok(Arbiter::name()))).then(
        |res: Result<Result<_, ()>, _>| {
            Arbiter::system().do_send(SystemExit(0));

            match res {
                Ok(Ok(name)) => assert_ne!(name, "test"),
                _ => assert!(false, "something is wrong"),
            }
            future::result(Ok(()))
        },
    ));

    sys.run();
}

#[test]
fn test_system_execute() {
    let sys = System::new("test");
    assert_eq!(Arbiter::name(), "test");

    let addr = Arbiter::new("exec-test");

    addr.do_send(Execute::new(|| -> Result<(), ()> {
        Arbiter::handle().spawn_fn(|| {
            Arbiter::system_arbiter().do_send(Execute::new(|| -> Result<(), ()> {
                Arbiter::system().do_send(SystemExit(0));

                assert_eq!(Arbiter::name(), "test");
                Ok(())
            }));
            future::ok(())
        });
        Ok(())
    }));

    sys.run();
}