2
2
3
3
use core:: {
4
4
marker:: PhantomData ,
5
- ops:: { Generator , GeneratorState } ,
5
+ ops:: { Coroutine , CoroutineState } ,
6
6
pin:: Pin ,
7
7
} ;
8
8
@@ -15,25 +15,25 @@ pub struct OptionMapEff<G, Effs, U> {
15
15
_u : PhantomData < fn ( ) -> U > ,
16
16
}
17
17
18
- impl < G , Effs , U > Generator < Effs :: Injections > for OptionMapEff < G , Effs , U >
18
+ impl < G , Effs , U > Coroutine < Effs :: Injections > for OptionMapEff < G , Effs , U >
19
19
where
20
20
Effs : EffectList ,
21
- G : Generator < Effs :: Injections , Yield = Effs , Return = U > ,
21
+ G : Coroutine < Effs :: Injections , Yield = Effs , Return = U > ,
22
22
{
23
23
type Yield = Effs ;
24
24
type Return = Option < U > ;
25
25
26
26
fn resume (
27
27
self : Pin < & mut Self > ,
28
28
injs : Effs :: Injections ,
29
- ) -> GeneratorState < Self :: Yield , Self :: Return > {
29
+ ) -> CoroutineState < Self :: Yield , Self :: Return > {
30
30
unsafe {
31
31
match & mut self . get_unchecked_mut ( ) . g {
32
32
Some ( g) => match Pin :: new_unchecked ( g) . resume ( injs) {
33
- GeneratorState :: Yielded ( effs) => GeneratorState :: Yielded ( effs) ,
34
- GeneratorState :: Complete ( ret) => GeneratorState :: Complete ( Some ( ret) ) ,
33
+ CoroutineState :: Yielded ( effs) => CoroutineState :: Yielded ( effs) ,
34
+ CoroutineState :: Complete ( ret) => CoroutineState :: Complete ( Some ( ret) ) ,
35
35
} ,
36
- None => GeneratorState :: Complete ( None ) ,
36
+ None => CoroutineState :: Complete ( None ) ,
37
37
}
38
38
}
39
39
}
@@ -50,14 +50,14 @@ pub trait OptionExt<T>: Sized {
50
50
fn map_eff < Effs , G > ( self , g : impl FnOnce ( T ) -> G ) -> OptionMapEff < G , Effs , G :: Return >
51
51
where
52
52
Effs : EffectList ,
53
- G : Generator < Effs :: Injections , Yield = Effs > ;
53
+ G : Coroutine < Effs :: Injections , Yield = Effs > ;
54
54
}
55
55
56
56
impl < T > OptionExt < T > for Option < T > {
57
57
fn map_eff < Effs , G > ( self , g : impl FnOnce ( T ) -> G ) -> OptionMapEff < G , Effs , G :: Return >
58
58
where
59
59
Effs : EffectList ,
60
- G : Generator < Effs :: Injections , Yield = Effs > ,
60
+ G : Coroutine < Effs :: Injections , Yield = Effs > ,
61
61
{
62
62
OptionMapEff {
63
63
g : self . map ( g) ,
@@ -74,29 +74,31 @@ pub struct ResultMapEff<G, E, Effs, U> {
74
74
_u : PhantomData < fn ( ) -> U > ,
75
75
}
76
76
77
- impl < G , E , Effs , U > Generator < Effs :: Injections > for ResultMapEff < G , E , Effs , U >
77
+ impl < G , E , Effs , U > Coroutine < Effs :: Injections > for ResultMapEff < G , E , Effs , U >
78
78
where
79
79
E : Unpin ,
80
80
Effs : EffectList ,
81
- G : Generator < Effs :: Injections , Yield = Effs , Return = U > ,
81
+ G : Coroutine < Effs :: Injections , Yield = Effs , Return = U > ,
82
82
{
83
83
type Yield = Effs ;
84
84
type Return = Result < U , E > ;
85
85
86
86
fn resume (
87
87
self : Pin < & mut Self > ,
88
88
injs : Effs :: Injections ,
89
- ) -> GeneratorState < Self :: Yield , Self :: Return > {
89
+ ) -> CoroutineState < Self :: Yield , Self :: Return > {
90
90
unsafe {
91
91
let g = & mut self . get_unchecked_mut ( ) . g ;
92
92
match g {
93
93
Some ( Ok ( g) ) => match Pin :: new_unchecked ( g) . resume ( injs) {
94
- GeneratorState :: Yielded ( effs) => GeneratorState :: Yielded ( effs) ,
95
- GeneratorState :: Complete ( ret) => GeneratorState :: Complete ( Ok ( ret) ) ,
94
+ CoroutineState :: Yielded ( effs) => CoroutineState :: Yielded ( effs) ,
95
+ CoroutineState :: Complete ( ret) => CoroutineState :: Complete ( Ok ( ret) ) ,
96
96
} ,
97
97
Some ( Err ( _) ) => {
98
- let Some ( Err ( e) ) = core:: mem:: take ( g) else { unreachable ! ( ) } ;
99
- GeneratorState :: Complete ( Err ( e) )
98
+ let Some ( Err ( e) ) = core:: mem:: take ( g) else {
99
+ unreachable ! ( )
100
+ } ;
101
+ CoroutineState :: Complete ( Err ( e) )
100
102
} ,
101
103
None => panic ! ( "resumed after completed" ) ,
102
104
}
@@ -111,29 +113,31 @@ pub struct ResultMapErrEff<G, T, Effs, U> {
111
113
_u : PhantomData < fn ( ) -> U > ,
112
114
}
113
115
114
- impl < G , T , Effs , U > Generator < Effs :: Injections > for ResultMapErrEff < G , T , Effs , U >
116
+ impl < G , T , Effs , U > Coroutine < Effs :: Injections > for ResultMapErrEff < G , T , Effs , U >
115
117
where
116
118
T : Unpin ,
117
119
Effs : EffectList ,
118
- G : Generator < Effs :: Injections , Yield = Effs , Return = U > ,
120
+ G : Coroutine < Effs :: Injections , Yield = Effs , Return = U > ,
119
121
{
120
122
type Yield = Effs ;
121
123
type Return = Result < T , U > ;
122
124
123
125
fn resume (
124
126
self : Pin < & mut Self > ,
125
127
injs : Effs :: Injections ,
126
- ) -> GeneratorState < Self :: Yield , Self :: Return > {
128
+ ) -> CoroutineState < Self :: Yield , Self :: Return > {
127
129
unsafe {
128
130
let g = & mut self . get_unchecked_mut ( ) . g ;
129
131
match g {
130
132
Some ( Err ( g) ) => match Pin :: new_unchecked ( g) . resume ( injs) {
131
- GeneratorState :: Yielded ( effs) => GeneratorState :: Yielded ( effs) ,
132
- GeneratorState :: Complete ( ret) => GeneratorState :: Complete ( Err ( ret) ) ,
133
+ CoroutineState :: Yielded ( effs) => CoroutineState :: Yielded ( effs) ,
134
+ CoroutineState :: Complete ( ret) => CoroutineState :: Complete ( Err ( ret) ) ,
133
135
} ,
134
136
Some ( Ok ( _) ) => {
135
- let Some ( Ok ( e) ) = core:: mem:: take ( g) else { unreachable ! ( ) } ;
136
- GeneratorState :: Complete ( Ok ( e) )
137
+ let Some ( Ok ( e) ) = core:: mem:: take ( g) else {
138
+ unreachable ! ( )
139
+ } ;
140
+ CoroutineState :: Complete ( Ok ( e) )
137
141
} ,
138
142
None => panic ! ( "resumed after completed" ) ,
139
143
}
@@ -149,22 +153,22 @@ pub trait ResultExt<T, E>: Sized {
149
153
fn map_eff < Effs , G > ( self , g : impl FnOnce ( T ) -> G ) -> ResultMapEff < G , E , Effs , G :: Return >
150
154
where
151
155
Effs : EffectList ,
152
- G : Generator < Effs :: Injections , Yield = Effs > ;
156
+ G : Coroutine < Effs :: Injections , Yield = Effs > ;
153
157
154
158
/// Transforms the value inside a [`Result::Err`] with some effects.
155
159
///
156
160
/// For more details, see [`OptionExt::map_eff`].
157
161
fn map_err_eff < Effs , G > ( self , g : impl FnOnce ( E ) -> G ) -> ResultMapErrEff < G , T , Effs , G :: Return >
158
162
where
159
163
Effs : EffectList ,
160
- G : Generator < Effs :: Injections , Yield = Effs > ;
164
+ G : Coroutine < Effs :: Injections , Yield = Effs > ;
161
165
}
162
166
163
167
impl < T , E > ResultExt < T , E > for Result < T , E > {
164
168
fn map_eff < Effs , G > ( self , g : impl FnOnce ( T ) -> G ) -> ResultMapEff < G , E , Effs , G :: Return >
165
169
where
166
170
Effs : EffectList ,
167
- G : Generator < Effs :: Injections , Yield = Effs > ,
171
+ G : Coroutine < Effs :: Injections , Yield = Effs > ,
168
172
{
169
173
ResultMapEff {
170
174
g : Some ( self . map ( g) ) ,
@@ -176,7 +180,7 @@ impl<T, E> ResultExt<T, E> for Result<T, E> {
176
180
fn map_err_eff < Effs , G > ( self , g : impl FnOnce ( E ) -> G ) -> ResultMapErrEff < G , T , Effs , G :: Return >
177
181
where
178
182
Effs : EffectList ,
179
- G : Generator < Effs :: Injections , Yield = Effs > ,
183
+ G : Coroutine < Effs :: Injections , Yield = Effs > ,
180
184
{
181
185
ResultMapErrEff {
182
186
g : Some ( self . map_err ( g) ) ,
0 commit comments