Skip to main content

generator_light/
generator_state.rs

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