@@ -3084,23 +3084,29 @@ struct DeTypeGenerics<'a>(&'a Parameters);
3084
3084
#[ cfg( feature = "deserialize_in_place" ) ]
3085
3085
struct InPlaceTypeGenerics < ' a > ( & ' a Parameters ) ;
3086
3086
3087
+ /// If `'de` lifetime is defined, prepends it to list of generics
3088
+ /// and then produces tokens for declaration generics on type
3089
+ fn to_tokens ( mut generics : syn:: Generics , borrowed : & BorrowedLifetimes , tokens : & mut TokenStream ) {
3090
+ if borrowed. de_lifetime_param ( ) . is_some ( ) {
3091
+ let def = syn:: LifetimeParam {
3092
+ attrs : Vec :: new ( ) ,
3093
+ lifetime : syn:: Lifetime :: new ( "'de" , Span :: call_site ( ) ) ,
3094
+ colon_token : None ,
3095
+ bounds : Punctuated :: new ( ) ,
3096
+ } ;
3097
+ // Prepend 'de lifetime to list of generics
3098
+ generics. params = Some ( syn:: GenericParam :: Lifetime ( def) )
3099
+ . into_iter ( )
3100
+ . chain ( generics. params )
3101
+ . collect ( ) ;
3102
+ }
3103
+ let ( _, ty_generics, _) = generics. split_for_impl ( ) ;
3104
+ ty_generics. to_tokens ( tokens) ;
3105
+ }
3106
+
3087
3107
impl < ' a > ToTokens for DeTypeGenerics < ' a > {
3088
3108
fn to_tokens ( & self , tokens : & mut TokenStream ) {
3089
- let mut generics = self . 0 . generics . clone ( ) ;
3090
- if self . 0 . borrowed . de_lifetime_param ( ) . is_some ( ) {
3091
- let def = syn:: LifetimeParam {
3092
- attrs : Vec :: new ( ) ,
3093
- lifetime : syn:: Lifetime :: new ( "'de" , Span :: call_site ( ) ) ,
3094
- colon_token : None ,
3095
- bounds : Punctuated :: new ( ) ,
3096
- } ;
3097
- generics. params = Some ( syn:: GenericParam :: Lifetime ( def) )
3098
- . into_iter ( )
3099
- . chain ( generics. params )
3100
- . collect ( ) ;
3101
- }
3102
- let ( _, ty_generics, _) = generics. split_for_impl ( ) ;
3103
- ty_generics. to_tokens ( tokens) ;
3109
+ to_tokens ( self . 0 . generics . clone ( ) , & self . 0 . borrowed , tokens) ;
3104
3110
}
3105
3111
}
3106
3112
@@ -3113,20 +3119,7 @@ impl<'a> ToTokens for InPlaceTypeGenerics<'a> {
3113
3119
. chain ( generics. params )
3114
3120
. collect ( ) ;
3115
3121
3116
- if self . 0 . borrowed . de_lifetime_param ( ) . is_some ( ) {
3117
- let def = syn:: LifetimeParam {
3118
- attrs : Vec :: new ( ) ,
3119
- lifetime : syn:: Lifetime :: new ( "'de" , Span :: call_site ( ) ) ,
3120
- colon_token : None ,
3121
- bounds : Punctuated :: new ( ) ,
3122
- } ;
3123
- generics. params = Some ( syn:: GenericParam :: Lifetime ( def) )
3124
- . into_iter ( )
3125
- . chain ( generics. params )
3126
- . collect ( ) ;
3127
- }
3128
- let ( _, ty_generics, _) = generics. split_for_impl ( ) ;
3129
- ty_generics. to_tokens ( tokens) ;
3122
+ to_tokens ( generics, & self . 0 . borrowed , tokens) ;
3130
3123
}
3131
3124
}
3132
3125
0 commit comments