@@ -111,23 +111,22 @@ pub(crate) fn expand(item: syn::Item, tr: Trait) -> syn::Result<TokenStream> {
111
111
state,
112
112
} = parse_attrs ( "from_request" , & attrs) ?;
113
113
114
- let state = match state {
115
- Some ( ( _, state) ) => State :: Custom ( state) ,
116
- None => {
117
- let mut inferred_state_types: HashSet < _ > =
118
- infer_state_type_from_field_types ( & fields)
119
- . chain ( infer_state_type_from_field_attributes ( & fields) )
120
- . collect ( ) ;
121
-
122
- if let Some ( ( _, via) ) = & via {
123
- inferred_state_types. extend ( state_from_via ( & ident, via) ) ;
124
- }
114
+ let state = if let Some ( ( _, state) ) = state {
115
+ State :: Custom ( state)
116
+ } else {
117
+ let mut inferred_state_types: HashSet < _ > =
118
+ infer_state_type_from_field_types ( & fields)
119
+ . chain ( infer_state_type_from_field_attributes ( & fields) )
120
+ . collect ( ) ;
125
121
126
- match inferred_state_types. len ( ) {
127
- 0 => State :: Default ( syn:: parse_quote!( S ) ) ,
128
- 1 => State :: Custom ( inferred_state_types. iter ( ) . next ( ) . unwrap ( ) . to_owned ( ) ) ,
129
- _ => State :: CannotInfer ,
130
- }
122
+ if let Some ( ( _, via) ) = & via {
123
+ inferred_state_types. extend ( state_from_via ( & ident, via) ) ;
124
+ }
125
+
126
+ match inferred_state_types. len ( ) {
127
+ 0 => State :: Default ( syn:: parse_quote!( S ) ) ,
128
+ 1 => State :: Custom ( inferred_state_types. iter ( ) . next ( ) . unwrap ( ) . to_owned ( ) ) ,
129
+ _ => State :: CannotInfer ,
131
130
}
132
131
} ;
133
132
@@ -147,7 +146,7 @@ pub(crate) fn expand(item: syn::Item, tr: Trait) -> syn::Result<TokenStream> {
147
146
}
148
147
} ;
149
148
150
- if let State :: CannotInfer = state {
149
+ if matches ! ( state , State :: CannotInfer ) {
151
150
let attr_name = match tr {
152
151
Trait :: FromRequest => "from_request" ,
153
152
Trait :: FromRequestParts => "from_request_parts" ,
@@ -335,17 +334,16 @@ fn impl_struct_by_extracting_each_field(
335
334
state : & State ,
336
335
tr : Trait ,
337
336
) -> syn:: Result < TokenStream > {
338
- let trait_fn_body = match state {
339
- State :: CannotInfer => quote ! {
337
+ let trait_fn_body = if matches ! ( state, State :: CannotInfer ) {
338
+ quote ! {
340
339
:: std:: unimplemented!( )
341
- } ,
342
- _ => {
343
- let extract_fields = extract_fields ( & fields, & rejection, tr) ?;
344
- quote ! {
345
- :: std:: result:: Result :: Ok ( Self {
346
- #( #extract_fields) *
347
- } )
348
- }
340
+ }
341
+ } else {
342
+ let extract_fields = extract_fields ( & fields, & rejection, tr) ?;
343
+ quote ! {
344
+ :: std:: result:: Result :: Ok ( Self {
345
+ #( #extract_fields) *
346
+ } )
349
347
}
350
348
} ;
351
349
@@ -417,15 +415,14 @@ fn extract_fields(
417
415
tr : Trait ,
418
416
) -> syn:: Result < Vec < TokenStream > > {
419
417
fn member ( field : & syn:: Field , index : usize ) -> TokenStream {
420
- match & field. ident {
421
- Some ( ident) => quote ! { #ident } ,
422
- _ => {
423
- let member = syn:: Member :: Unnamed ( syn:: Index {
424
- index : index as u32 ,
425
- span : field. span ( ) ,
426
- } ) ;
427
- quote ! { #member }
428
- }
418
+ if let Some ( ident) = & field. ident {
419
+ quote ! { #ident }
420
+ } else {
421
+ let member = syn:: Member :: Unnamed ( syn:: Index {
422
+ index : index as u32 ,
423
+ span : field. span ( ) ,
424
+ } ) ;
425
+ quote ! { #member }
429
426
}
430
427
}
431
428
@@ -642,9 +639,7 @@ fn extract_fields(
642
639
}
643
640
644
641
fn peel_option ( ty : & syn:: Type ) -> Option < & syn:: Type > {
645
- let type_path = if let syn:: Type :: Path ( type_path) = ty {
646
- type_path
647
- } else {
642
+ let syn:: Type :: Path ( type_path) = ty else {
648
643
return None ;
649
644
} ;
650
645
@@ -673,9 +668,7 @@ fn peel_option(ty: &syn::Type) -> Option<&syn::Type> {
673
668
}
674
669
675
670
fn peel_result_ok ( ty : & syn:: Type ) -> Option < & syn:: Type > {
676
- let type_path = if let syn:: Type :: Path ( type_path) = ty {
677
- type_path
678
- } else {
671
+ let syn:: Type :: Path ( type_path) = ty else {
679
672
return None ;
680
673
} ;
681
674
0 commit comments