@@ -713,11 +713,10 @@ fn substitute_type(ty: &Type, generic_params: &[String], concrete_types: &[&Type
713713
714714 if let syn:: PathArguments :: None = & segment. arguments {
715715 // Direct generic parameter substitution
716- if let Some ( index) = generic_params. iter ( ) . position ( |p| p == & ident_str) {
717- if let Some ( concrete_ty) = concrete_types. get ( index) {
716+ if let Some ( index) = generic_params. iter ( ) . position ( |p| p == & ident_str)
717+ && let Some ( concrete_ty) = concrete_types. get ( index) {
718718 return ( * concrete_ty) . clone ( ) ;
719719 }
720- }
721720 }
722721 }
723722
@@ -730,13 +729,9 @@ fn substitute_type(ty: &Type, generic_params: &[String], concrete_types: &[&Type
730729 let mut new_args = syn:: punctuated:: Punctuated :: new ( ) ;
731730 for arg in & args. args {
732731 let new_arg = match arg {
733- syn:: GenericArgument :: Type ( inner_ty) => {
734- syn:: GenericArgument :: Type ( substitute_type (
735- inner_ty,
736- generic_params,
737- concrete_types,
738- ) )
739- }
732+ syn:: GenericArgument :: Type ( inner_ty) => syn:: GenericArgument :: Type (
733+ substitute_type ( inner_ty, generic_params, concrete_types) ,
734+ ) ,
740735 other => other. clone ( ) ,
741736 } ;
742737 new_args. push ( new_arg) ;
@@ -771,21 +766,33 @@ fn substitute_type(ty: &Type, generic_params: &[String], concrete_types: &[&Type
771766 and_token : type_ref. and_token ,
772767 lifetime : type_ref. lifetime . clone ( ) ,
773768 mutability : type_ref. mutability ,
774- elem : Box :: new ( substitute_type ( & type_ref. elem , generic_params, concrete_types) ) ,
769+ elem : Box :: new ( substitute_type (
770+ & type_ref. elem ,
771+ generic_params,
772+ concrete_types,
773+ ) ) ,
775774 } )
776775 }
777776 Type :: Slice ( type_slice) => {
778777 // Handle [T]
779778 Type :: Slice ( syn:: TypeSlice {
780779 bracket_token : type_slice. bracket_token ,
781- elem : Box :: new ( substitute_type ( & type_slice. elem , generic_params, concrete_types) ) ,
780+ elem : Box :: new ( substitute_type (
781+ & type_slice. elem ,
782+ generic_params,
783+ concrete_types,
784+ ) ) ,
782785 } )
783786 }
784787 Type :: Array ( type_array) => {
785788 // Handle [T; N]
786789 Type :: Array ( syn:: TypeArray {
787790 bracket_token : type_array. bracket_token ,
788- elem : Box :: new ( substitute_type ( & type_array. elem , generic_params, concrete_types) ) ,
791+ elem : Box :: new ( substitute_type (
792+ & type_array. elem ,
793+ generic_params,
794+ concrete_types,
795+ ) ) ,
789796 semi_token : type_array. semi_token ,
790797 len : type_array. len . clone ( ) ,
791798 } )
0 commit comments