@@ -594,12 +594,10 @@ fn generate_impl_text_inner(
594
594
let generic_params = adt. generic_param_list ( ) . map ( |generic_params| {
595
595
let lifetime_params =
596
596
generic_params. lifetime_params ( ) . map ( ast:: GenericParam :: LifetimeParam ) ;
597
- let ty_or_const_params = generic_params. type_or_const_params ( ) . map ( |param| {
598
- match param {
597
+ let ty_or_const_params = generic_params. type_or_const_params ( ) . filter_map ( |param| {
598
+ let param = match param {
599
599
ast:: TypeOrConstParam :: Type ( param) => {
600
- let param = param. clone_for_update ( ) ;
601
600
// remove defaults since they can't be specified in impls
602
- param. remove_default ( ) ;
603
601
let mut bounds =
604
602
param. type_bound_list ( ) . map_or_else ( Vec :: new, |it| it. bounds ( ) . collect ( ) ) ;
605
603
if let Some ( trait_) = trait_text {
@@ -610,17 +608,16 @@ fn generate_impl_text_inner(
610
608
}
611
609
} ;
612
610
// `{ty_param}: {bounds}`
613
- let param =
614
- make:: type_param ( param. name ( ) . unwrap ( ) , make:: type_bound_list ( bounds) ) ;
611
+ let param = make:: type_param ( param. name ( ) ?, make:: type_bound_list ( bounds) ) ;
615
612
ast:: GenericParam :: TypeParam ( param)
616
613
}
617
614
ast:: TypeOrConstParam :: Const ( param) => {
618
- let param = param. clone_for_update ( ) ;
619
615
// remove defaults since they can't be specified in impls
620
- param. remove_default ( ) ;
616
+ let param = make :: const_param ( param . name ( ) ? , param . ty ( ) ? ) ;
621
617
ast:: GenericParam :: ConstParam ( param)
622
618
}
623
- }
619
+ } ;
620
+ Some ( param)
624
621
} ) ;
625
622
626
623
make:: generic_param_list ( itertools:: chain ( lifetime_params, ty_or_const_params) )
@@ -695,12 +692,10 @@ fn generate_impl_inner(
695
692
let generic_params = adt. generic_param_list ( ) . map ( |generic_params| {
696
693
let lifetime_params =
697
694
generic_params. lifetime_params ( ) . map ( ast:: GenericParam :: LifetimeParam ) ;
698
- let ty_or_const_params = generic_params. type_or_const_params ( ) . map ( |param| {
699
- match param {
695
+ let ty_or_const_params = generic_params. type_or_const_params ( ) . filter_map ( |param| {
696
+ let param = match param {
700
697
ast:: TypeOrConstParam :: Type ( param) => {
701
- let param = param. clone_for_update ( ) ;
702
698
// remove defaults since they can't be specified in impls
703
- param. remove_default ( ) ;
704
699
let mut bounds =
705
700
param. type_bound_list ( ) . map_or_else ( Vec :: new, |it| it. bounds ( ) . collect ( ) ) ;
706
701
if let Some ( trait_) = & trait_ {
@@ -711,17 +706,16 @@ fn generate_impl_inner(
711
706
}
712
707
} ;
713
708
// `{ty_param}: {bounds}`
714
- let param =
715
- make:: type_param ( param. name ( ) . unwrap ( ) , make:: type_bound_list ( bounds) ) ;
709
+ let param = make:: type_param ( param. name ( ) ?, make:: type_bound_list ( bounds) ) ;
716
710
ast:: GenericParam :: TypeParam ( param)
717
711
}
718
712
ast:: TypeOrConstParam :: Const ( param) => {
719
- let param = param. clone_for_update ( ) ;
720
713
// remove defaults since they can't be specified in impls
721
- param. remove_default ( ) ;
714
+ let param = make :: const_param ( param . name ( ) ? , param . ty ( ) ? ) ;
722
715
ast:: GenericParam :: ConstParam ( param)
723
716
}
724
- }
717
+ } ;
718
+ Some ( param)
725
719
} ) ;
726
720
727
721
make:: generic_param_list ( itertools:: chain ( lifetime_params, ty_or_const_params) )
0 commit comments