1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#![no_std]

mod compose;
mod flat_map;
mod flat_scan;
mod iter;

pub use compose::*;
pub use flat_map::*;
pub use flat_scan::*;
pub use iter::*;

pub trait Generator {
    type Yield;
    type Return;
    fn resume(&mut self) -> GeneratorState<Self::Yield, Self::Return>;
}

pub enum GeneratorState<Y, R> {
    Yielded(Y),
    Completed(R),
}