sprite-core 0.1.7

Sprite Engine — a fault-tolerant actor runtime for Rust
Documentation
use sprite_core::{Engine, Message};

fn main() {
    let engine = Engine::new();

    let counter = engine.spawn("counter", |ctx| {
        let count = ctx.use_state("count", 0i64);

        ctx.on_message(move |msg| {
            match msg.as_str() {
                Some("inc") => {
                    count.update(|c| c + 1);
                    println!("count = {}", count.get());
                }
                Some("dec") => {
                    count.update(|c| c - 1);
                    println!("count = {}", count.get());
                }
                Some("panic") => {
                    panic!("user-triggered panic");
                }
                _ => {}
            }
        });

        ctx.on_panic(|| {
            println!("Counter recovered! State is intact.");
        });
    });

    std::thread::sleep(std::time::Duration::from_millis(20));

    counter.send(Message::text("inc"));
    counter.send(Message::text("inc"));
    counter.send(Message::text("dec"));
    counter.send(Message::text("panic"));
    counter.send(Message::text("inc"));

    std::thread::sleep(std::time::Duration::from_millis(200));
}