flowync 5.1.0

A simple utility for multithreading a/synchronization
Documentation
use flowync::Flower;

#[test]
fn drive() {
    let flower = Flower::<i32, String>::new(1);
    std::thread::spawn({
        let handle = flower.handle();
        handle.activate();
        move || {
            for i in 1..20 {
                handle.send(i);
            }
            handle.success("Ok".to_string());
        }
    });

    let mut exit = false;
    let mut received_last_value = 0;
    let mut sum = 0;

    loop {
        if flower.is_active() {
            flower
                .extract(|value| {
                    sum += value;
                    received_last_value = value;
                })
                .finalize(|result| {
                    match result {
                        Ok(value) => {
                            assert_eq!(String::from("Ok"), value);
                        }
                        _ => (),
                    }

                    exit = true;
                });
        }

        if exit {
            break;
        }
    }

    assert_eq!(received_last_value, 19);
    assert_eq!(sum, 190);
}