floop 0.1.2

A more convenient and less error prone replacement for loop `{ select! { .. }}`
Documentation
use std::{future::ready, time::Duration};

use floop::floop;
use futures::executor::block_on;
use smol::Timer;

#[test]
fn condition() {
    let mut counter = 0;
    let mut tmp = None;
    let future = floop! {
        unbiased
        _ in if tmp.is_none(), Timer::after(Duration::from_millis(10)) => {
            tmp = Some(ready(counter + 1));
            if counter == 9 {
                break;
            }
        }
        new_value in if let Some(fut) = { tmp.take() }, fut => {
            counter = new_value;

            if counter == 10 {
                break;
            }
        }
    };

    block_on(future);

    assert_eq!(counter, 10);
}