generator_light/
generator_state.rs1#[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}