adar 0.2.0

Collection of architectural tools including flags, state machine, enum and tuple operations.
Documentation
pub trait TupleConcat<O, Res> {
    fn concat(self, other: O) -> Res;
}

macro_rules! impl_concat_tuple {
    // Non-empty + non-empty
    (($($idx_a:tt => $a:ident,)*), ($($idx_b:tt => $b:ident,)*)) => {
        impl<$($a,)* $($b,)*> TupleConcat<($($b,)*), ($($a,)* $($b,)*)> for ($($a,)*) {
            #[inline(always)]
            fn concat(self, other: ($($b,)*)) -> ($($a,)* $($b,)*) {
                ($(
                    self.$idx_a,
                )* $(
                    other.$idx_b,
                )*)
            }
        }
    };

    // Empty + non-empty
    ((,), ($($idx_b:tt => $b:ident,)*)) => {
        impl<$($b,)*> TupleConcat<($($b,)*), ($($b,)*)> for () {
            #[inline(always)]
            fn concat(self, other: ($($b,)*)) -> ($($b,)*) {
                ($(
                    other.$idx_b,
                )*)
            }
        }
    };

    // Non-empty + empty
    (($($idx_a:tt => $a:ident,)*), (,)) => {
        impl<$($a,)*> TupleConcat<(), ($($a,)*)> for ($($a,)*) {
            #[inline(always)]
            fn concat(self, _other: ()) -> ($($a,)*) {
                ($(
                    self.$idx_a,
                )*)
            }
        }
    };

    // Empty + empty
    ((,), (,)) => {
        impl TupleConcat<(), ()> for () {
            #[inline(always)]
            fn concat(self, _other: ()) -> () {
                ()
            }
        }
    };
}

impl_concat_tuple!((,), (,));
impl_concat_tuple!((,), (0=>B1,));
impl_concat_tuple!((,), (0=>B1,1=>B2,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,), (,));
impl_concat_tuple!((0=>A1,), (0=>B1,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,), (,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,));
impl_concat_tuple!((0=>A1,1=>A2,2=>A3,3=>A4,4=>A5,5=>A6,6=>A7,7=>A8,8=>A9,9=>A10,10=>A11,11=>A12,12=>A13,13=>A14,14=>A15,15=>A16,), (0=>B1,1=>B2,2=>B3,3=>B4,4=>B5,5=>B6,6=>B7,7=>B8,8=>B9,9=>B10,10=>B11,11=>B12,12=>B13,13=>B14,14=>B15,15=>B16,));

#[cfg(test)]
mod test {
    use super::*;
    #[test]
    fn test_concat_tuple() {
        assert_eq!((0, 1, 2).concat((3, 4)), (0, 1, 2, 3, 4));
        assert_eq!(().concat((0, 1, 2)), (0, 1, 2));
        assert_eq!((0, 1, 2).concat(()), (0, 1, 2));
        assert_eq!(().concat(()), ());
        assert_eq!(
            ("Hello", "this").concat(("is", "adar")),
            ("Hello", "this", "is", "adar")
        );
        assert_eq!(
            (0, false, "no").concat((true, "yes", 1)),
            (0, false, "no", true, "yes", 1)
        );
    }
}