@@ -461,10 +461,27 @@ impl Extend<()> for () {
461461
462462macro_rules! spec_tuple_impl {
463463 (
464+ [ $( $params_: tt) * ]
464465 (
465- $T: ident, $var_name: ident, $ExtendT: ident,
466- $SpecTupleExtendN: ident, $default_extend_tuple_n: ident, $cnt: tt
466+ $params: tt, $SpecTupleExtendN: ident, $default_extend_tuple_n: ident
467467 ) ,
468+ $( $remainder: tt, ) *
469+ ) => {
470+ spec_tuple_impl!(
471+ $SpecTupleExtendN,
472+ $default_extend_tuple_n,
473+ $( $params_, ) *
474+ $params
475+ ) ;
476+ spec_tuple_impl!(
477+ [ $( $params_) * $params]
478+ $( $remainder, ) *
479+ ) ;
480+ } ;
481+ ( [ $( $params_: tt) * ] ) => { } ;
482+ (
483+ $SpecTupleExtendN: ident, $default_extend_tuple_n: ident,
484+ $params: tt
468485 ) => {
469486 spec_tuple_impl!(
470487 $SpecTupleExtendN,
@@ -473,41 +490,18 @@ macro_rules! spec_tuple_impl {
473490 #[ doc = "This trait is implemented for tuples up to twelve items long. The `impl`s for \
474491 1- and 3- through 12-ary tuples were stabilized after 2-tuples, in \
475492 1.85.0."]
476- => ( $T , $var_name , $ExtendT , $cnt ) ,
493+ => $params ,
477494 ) ;
478495 } ;
479496 (
480- (
481- $T: ident, $var_name: ident, $ExtendT: ident,
482- $SpecTupleExtendN: ident, $default_extend_tuple_n: ident, $cnt: tt
483- ) ,
484- $(
485- (
486- $Ts: ident, $var_names: ident, $ExtendTs: ident,
487- $SpecTupleExtendNs: ident, $default_extend_tuple_ns: ident, $cnts: tt
488- ) ,
489- ) *
497+ $SpecTupleExtendN: ident, $default_extend_tuple_n: ident,
498+ $( $params: tt) ,+
490499 ) => {
491- spec_tuple_impl!(
492- $(
493- (
494- $Ts, $var_names, $ExtendTs,
495- $SpecTupleExtendNs, $default_extend_tuple_ns, $cnts
496- ) ,
497- ) *
498- ) ;
499500 spec_tuple_impl!(
500501 $SpecTupleExtendN,
501502 $default_extend_tuple_n,
502503 #[ doc( hidden) ]
503- => (
504- $T, $var_name, $ExtendT, $cnt
505- ) ,
506- $(
507- (
508- $Ts, $var_names, $ExtendTs, $cnts
509- ) ,
510- ) *
504+ => $( $params, ) +
511505 ) ;
512506 } ;
513507 (
@@ -676,17 +670,17 @@ macro_rules! spec_tuple_impl {
676670 } ;
677671}
678672
679- spec_tuple_impl ! (
680- ( L , l , ExtendL , SpecTupleExtend12 , default_extend_tuple_12 , 11 ) ,
681- ( K , k , ExtendK , SpecTupleExtend11 , default_extend_tuple_11 , 10 ) ,
682- ( J , j , ExtendJ , SpecTupleExtend10 , default_extend_tuple_10 , 9 ) ,
683- ( I , i , ExtendI , SpecTupleExtend9 , default_extend_tuple_9 , 8 ) ,
684- ( H , h , ExtendH , SpecTupleExtend8 , default_extend_tuple_8 , 7 ) ,
685- ( G , g , ExtendG , SpecTupleExtend7 , default_extend_tuple_7 , 6 ) ,
686- ( F , f , ExtendF , SpecTupleExtend6 , default_extend_tuple_6 , 5 ) ,
687- ( E , e , ExtendE , SpecTupleExtend5 , default_extend_tuple_5 , 4 ) ,
688- ( D , d , ExtendD , SpecTupleExtend4 , default_extend_tuple_4 , 3 ) ,
689- ( C , c , ExtendC , SpecTupleExtend3 , default_extend_tuple_3 , 2 ) ,
690- ( B , b , ExtendB , SpecTupleExtend2 , default_extend_tuple_2 , 1 ) ,
691- ( A , a , ExtendA , SpecTupleExtend1 , default_extend_tuple_1 , 0 ) ,
673+ spec_tuple_impl ! ( [ ]
674+ ( ( A , a , ExtendA , 0 ) , SpecTupleExtend1 , default_extend_tuple_1 ) ,
675+ ( ( B , b , ExtendB , 1 ) , SpecTupleExtend2 , default_extend_tuple_2 ) ,
676+ ( ( C , c , ExtendC , 2 ) , SpecTupleExtend3 , default_extend_tuple_3 ) ,
677+ ( ( D , d , ExtendD , 3 ) , SpecTupleExtend4 , default_extend_tuple_4 ) ,
678+ ( ( E , e , ExtendE , 4 ) , SpecTupleExtend5 , default_extend_tuple_5 ) ,
679+ ( ( F , f , ExtendF , 5 ) , SpecTupleExtend6 , default_extend_tuple_6 ) ,
680+ ( ( G , g , ExtendG , 6 ) , SpecTupleExtend7 , default_extend_tuple_7 ) ,
681+ ( ( H , h , ExtendH , 7 ) , SpecTupleExtend8 , default_extend_tuple_8 ) ,
682+ ( ( I , i , ExtendI , 8 ) , SpecTupleExtend9 , default_extend_tuple_9 ) ,
683+ ( ( J , j , ExtendJ , 9 ) , SpecTupleExtend10 , default_extend_tuple_10 ) ,
684+ ( ( K , k , ExtendK , 10 ) , SpecTupleExtend11 , default_extend_tuple_11 ) ,
685+ ( ( L , l , ExtendL , 11 ) , SpecTupleExtend12 , default_extend_tuple_12 ) ,
692686) ;
0 commit comments