Skip to content

Commit 29bef94

Browse files
committed
Get Extend for tuples (back) into the correct order of operations & params
1 parent 9e01c60 commit 29bef94

File tree

1 file changed

+36
-42
lines changed

1 file changed

+36
-42
lines changed

library/core/src/iter/traits/collect.rs

Lines changed: 36 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -461,10 +461,27 @@ impl Extend<()> for () {
461461

462462
macro_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

Comments
 (0)