yao 0.1.4

a fast, tiny, extensiable workflow engine
Documentation
use yao::{Engine, Message, Vars, Workflow};

#[tokio::main]
async fn main() {
    let engine = Engine::new();

    let text = include_str!("./model.yml");
    let workflow = Workflow::from_str(text).unwrap();
    engine.push(&workflow);

    let e1 = engine.clone();
    engine.on_message(move |message: &Message| {
        println!("on_message: {}", message);
        let ret = e1.post_message(&message.id, "a", "user", Vars::new());
        if ret.is_err() {
            eprintln!("{}", ret.err().unwrap());
            std::process::exit(1);
        }
    });

    let e2 = engine.clone();
    engine.on_workflow_complete(move |w: &Workflow| {
        println!("{:?}", w.outputs());
        e2.close();
    });

    engine.start().await;
}