wingfoil 3.0.1

graph based stream processing framework
Documentation
use log::Level::Info;
use std::rc::Rc;
use std::thread;
use std::time::Duration;
use wingfoil::*;

fn label(name: &str) -> String {
    format!("{:?} >> {:9}", thread::current().id(), name)
}

fn main() {
    env_logger::init();
    let period = Duration::from_millis(100);
    let run_mode = RunMode::RealTime;
    let run_for = RunFor::Duration(period * 6);

    let produce_graph = move || {
        let label = label("producer");
        ticker(period).count().logged(&label, Info)
    };

    let map_graph = |src: Rc<dyn Stream<Burst<u64>>>| {
        let label = label("mapper");
        src.collapse().map(|x| x * 10).logged(&label, Info)
    };

    producer(produce_graph)
        .collapse()
        .logged(&label("main-pre"), Info)
        .mapper(map_graph)
        .collapse()
        .logged(&label("main-post"), Info)
        .run(run_mode, run_for)
        .unwrap();
}