@@ -88,16 +88,14 @@ fn count_nodes(krate: &ast::Crate) -> usize {
8888 counter. count
8989}
9090
91- #[ derive( Copy , Clone ) ]
92- pub struct AccessAction ( * mut dyn FnMut ( ) ) ;
91+ pub struct AccessAction ( * mut dyn for < ' a > FnMut ( & mut Resolver < ' a > ) ) ;
9392
9493impl AccessAction {
95- pub fn get ( self ) -> * mut dyn FnMut ( ) {
94+ pub fn get ( self ) -> * mut dyn for < ' a > FnMut ( & mut Resolver < ' a > ) {
9695 self . 0
9796 }
9897}
9998
100- #[ derive( Copy , Clone ) ]
10199pub enum Action {
102100 Initial ,
103101 Access ( AccessAction ) ,
@@ -123,7 +121,7 @@ pub struct BoxedResolver {
123121 Box <
124122 dyn Generator <
125123 Action ,
126- Yield = YieldType < Result < ast:: Crate > , fn ( & mut Resolver < ' _ > ) > ,
124+ Yield = YieldType < Result < ast:: Crate > , for < ' a > fn ( & mut Resolver < ' a > ) > ,
127125 Return = ResolverOutputs ,
128126 > ,
129127 > ,
@@ -150,16 +148,16 @@ impl BoxedResolver {
150148 ( init, BoxedResolver { generator } )
151149 }
152150
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 {
154152 // Turn the FnOnce closure into *mut dyn FnMut()
155153 // so we can pass it in to the generator
156154 let mut r = None ;
157155 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| {
159157 let f = f. take ( ) . unwrap ( ) ;
160158 r = Some ( f ( resolver) ) ;
161159 } ;
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 > ) ;
163161
164162 // Get the generator to call our closure
165163 unsafe {
0 commit comments