Skip to main content

generator_light/
generator_state.rs

1#[derive(Debug)]
2pub enum GeneratorState<Y, R> {
3    Suspend,
4    Yield(Y),
5    Complete(R),
6}
7
8impl<Y, R> GeneratorState<Y, R> {
9    pub fn map_yield<U>(self, f: impl FnOnce(Y) -> U) -> GeneratorState<U, R> {
10        match self {
11            GeneratorState::Suspend => GeneratorState::Suspend,
12            GeneratorState::Yield(y) => GeneratorState::Yield(f(y)),
13            GeneratorState::Complete(r) => GeneratorState::Complete(r),
14        }
15    }
16
17    pub fn map_complete<U>(self, f: impl FnOnce(R) -> U) -> GeneratorState<Y, U> {
18        match self {
19            GeneratorState::Suspend => GeneratorState::Suspend,
20            GeneratorState::Yield(y) => GeneratorState::Yield(y),
21            GeneratorState::Complete(r) => GeneratorState::Complete(f(r)),
22        }
23    }
24}