1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
mod iter;
mod flat_map;
mod flat_scan;
mod compose;

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

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),
}