@@ -88,16 +88,14 @@ fn count_nodes(krate: &ast::Crate) -> usize {
88
88
counter. count
89
89
}
90
90
91
- #[ derive( Copy , Clone ) ]
92
- pub struct AccessAction ( * mut dyn FnMut ( ) ) ;
91
+ pub struct AccessAction ( * mut dyn for < ' a > FnMut ( & mut Resolver < ' a > ) ) ;
93
92
94
93
impl AccessAction {
95
- pub fn get ( self ) -> * mut dyn FnMut ( ) {
94
+ pub fn get ( self ) -> * mut dyn for < ' a > FnMut ( & mut Resolver < ' a > ) {
96
95
self . 0
97
96
}
98
97
}
99
98
100
- #[ derive( Copy , Clone ) ]
101
99
pub enum Action {
102
100
Initial ,
103
101
Access ( AccessAction ) ,
@@ -123,7 +121,7 @@ pub struct BoxedResolver {
123
121
Box <
124
122
dyn Generator <
125
123
Action ,
126
- Yield = YieldType < Result < ast:: Crate > , fn ( & mut Resolver < ' _ > ) > ,
124
+ Yield = YieldType < Result < ast:: Crate > , for < ' a > fn ( & mut Resolver < ' a > ) > ,
127
125
Return = ResolverOutputs ,
128
126
> ,
129
127
> ,
@@ -150,16 +148,16 @@ impl BoxedResolver {
150
148
( init, BoxedResolver { generator } )
151
149
}
152
150
153
- pub fn access < F : FnOnce ( & mut Resolver < ' _ > ) -> R , R > ( & mut self , f : F ) -> R {
151
+ pub fn access < F : for < ' a > FnOnce ( & mut Resolver < ' a > ) -> R , R > ( & mut self , f : F ) -> R {
154
152
// Turn the FnOnce closure into *mut dyn FnMut()
155
153
// so we can pass it in to the generator
156
154
let mut r = None ;
157
155
let mut f = Some ( f) ;
158
- let mut_f: & mut dyn FnMut ( & mut Resolver < ' _ > ) = & mut |resolver| {
156
+ let mut_f: & mut dyn for < ' a > FnMut ( & mut Resolver < ' a > ) = & mut |resolver| {
159
157
let f = f. take ( ) . unwrap ( ) ;
160
158
r = Some ( f ( resolver) ) ;
161
159
} ;
162
- let mut_f = mut_f as * mut dyn FnMut ( & mut Resolver < ' _ > ) ;
160
+ let mut_f = mut_f as * mut dyn for < ' a > FnMut ( & mut Resolver < ' a > ) ;
163
161
164
162
// Get the generator to call our closure
165
163
unsafe {
0 commit comments