@@ -8,7 +8,7 @@ use field::SequenceField;
8
8
use proc_macro2:: TokenStream ;
9
9
use proc_macro_error:: abort;
10
10
use quote:: quote;
11
- use syn:: { DeriveInput , GenericParam , Generics , Ident , Lifetime , LifetimeParam } ;
11
+ use syn:: { DeriveInput , GenericParam , Generics , Ident , LifetimeParam } ;
12
12
13
13
/// Derive the `Sequence` trait for a struct
14
14
pub ( crate ) struct DeriveSequence {
@@ -55,16 +55,17 @@ impl DeriveSequence {
55
55
56
56
// Use the first lifetime parameter as lifetime for Decode/Encode lifetime
57
57
// if none found, add one.
58
- let lifetime: Lifetime = if let Some ( lt) = generics. lifetimes ( ) . next ( ) {
59
- lt. lifetime . clone ( )
60
- } else {
61
- let lifetime = default_lifetime ( ) ;
62
- generics. params . insert (
63
- 0 ,
64
- GenericParam :: Lifetime ( LifetimeParam :: new ( lifetime. clone ( ) ) ) ,
65
- ) ;
66
- lifetime
67
- } ;
58
+ let lifetime = generics
59
+ . lifetimes ( )
60
+ . next ( )
61
+ . map ( |lt| lt. lifetime . clone ( ) )
62
+ . unwrap_or_else ( || {
63
+ let lt = default_lifetime ( ) ;
64
+ generics
65
+ . params
66
+ . insert ( 0 , GenericParam :: Lifetime ( LifetimeParam :: new ( lt. clone ( ) ) ) ) ;
67
+ lt
68
+ } ) ;
68
69
69
70
// We may or may not have inserted a lifetime.
70
71
let ( _impl_generics, ty_generics, where_clause) = self . generics . split_for_impl ( ) ;
0 commit comments