next-gen 0.1.1

Safe generators on stable Rust.
fn main ()
{
    use ::next_gen::prelude::*;

    #[generator(yield(u8))]
    fn countdown<Ret> (count: u8, value: Ret)
      -> Ret
    {
        let mut current = count;
        while let Some(next) = current.checked_sub(1) {
            yield_!(current);
            current = next;
        }
        value
    }

    mk_gen!(let mut generator = countdown(3, "Boom!"));
    let mut next = || generator.as_mut().resume(());
    assert_eq!(next(), GeneratorState::Yielded(3));
    assert_eq!(next(), GeneratorState::Yielded(2));
    assert_eq!(next(), GeneratorState::Yielded(1));
    assert_eq!(next(), GeneratorState::Returned("Boom!"));
}