Skip to main content

diesel/query_dsl/
positional_order_dsl.rs

1use crate::backend::{Backend, DieselReserveSpecialization};
2use crate::expression::helper_types::{Asc, Desc};
3use crate::expression::Expression;
4use crate::query_builder::{AstPass, QueryFragment, QueryId};
5use crate::QueryResult;
6
7/// The `positional_order_by` method
8///
9/// This trait is not yet part of Diesel's public API. It may change in the
10/// future without a major version bump.
11///
12/// This trait exists as a stop-gap for users who need to order by column position
13/// in their queries, so that they are not forced to drop entirely to raw SQL. The
14/// arguments to `positional_order_by` are not checked, nor is the select statement
15/// forced to be valid.
16pub trait PositionalOrderDsl<Expr: IntoPositionalOrderExpr> {
17    /// The type returned by `.positional_order_by`
18    type Output;
19
20    /// See the trait documentation.
21    fn positional_order_by(self, expr: Expr) -> Self::Output;
22}
23
24pub trait PositionalOrderExpr: Expression {}
25
26impl PositionalOrderExpr for OrderColumn {}
27impl<T: PositionalOrderExpr> PositionalOrderExpr for Asc<T> {}
28impl<T: PositionalOrderExpr> PositionalOrderExpr for Desc<T> {}
29
30pub trait IntoPositionalOrderExpr {
31    type Output: PositionalOrderExpr;
32
33    fn into_positional_expr(self) -> Self::Output;
34}
35
36impl IntoPositionalOrderExpr for u32 {
37    type Output = OrderColumn;
38
39    fn into_positional_expr(self) -> Self::Output {
40        self.into()
41    }
42}
43impl<T: PositionalOrderExpr> IntoPositionalOrderExpr for Asc<T> {
44    type Output = Asc<T>;
45
46    fn into_positional_expr(self) -> Self::Output {
47        self
48    }
49}
50impl<T: PositionalOrderExpr> IntoPositionalOrderExpr for Desc<T> {
51    type Output = Desc<T>;
52
53    fn into_positional_expr(self) -> Self::Output {
54        self
55    }
56}
57
58#[derive(#[automatically_derived]
impl ::core::fmt::Debug for OrderColumn {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::debug_tuple_field1_finish(f, "OrderColumn",
            &&self.0)
    }
}Debug, #[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for OrderColumn { }
#[automatically_derived]
impl ::core::clone::Clone for OrderColumn {
    #[inline]
    fn clone(&self) -> OrderColumn {
        let _: ::core::clone::AssertParamIsClone<u32>;
        *self
    }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for OrderColumn { }Copy)]
59pub struct OrderColumn(pub u32);
60
61impl QueryId for OrderColumn {
62    type QueryId = ();
63
64    // it's not safe to cache by type id
65    // as we inline a dynamic value (the offset) directly
66    // into the SQL
67    const HAS_STATIC_QUERY_ID: bool = false;
68}
69
70impl Expression for OrderColumn {
71    type SqlType = crate::sql_types::Integer;
72}
73
74impl<DB> QueryFragment<DB> for OrderColumn
75where
76    DB: Backend + DieselReserveSpecialization,
77{
78    fn walk_ast<'b>(&'b self, mut pass: AstPass<'_, 'b, DB>) -> QueryResult<()> {
79        // unfortunally binds are not supported in this position
80        pass.push_sql(&self.0.to_string());
81        Ok(())
82    }
83}
84
85impl From<u32> for OrderColumn {
86    fn from(order: u32) -> Self {
87        OrderColumn(order)
88    }
89}
90
91macro_rules! impl_positional_order_expr_for_all_tuples {
92    ($(
93        $unused1:tt {
94            $(($idx:tt) -> $T:ident, $U:ident, $unused3:tt,)+
95        }
96    )+) => {
97        $(
98            impl<$($T: PositionalOrderExpr),+> PositionalOrderExpr for ($($T,)+) { }
99
100            impl<$($T, $U,)+> IntoPositionalOrderExpr for ($($T,)+)
101            where
102                $($T: IntoPositionalOrderExpr<Output = $U>,)+
103                $($U: PositionalOrderExpr,)+
104            {
105                type Output = ($($U,)+);
106
107                fn into_positional_expr(self) -> Self::Output {
108                    ($(self.$idx.into_positional_expr(),)+)
109                }
110            }
111        )+
112    };
113}
114
115impl<T: PositionalOrderExpr> PositionalOrderExpr for (T,) {}
impl<T, ST> IntoPositionalOrderExpr for (T,) where
    T: IntoPositionalOrderExpr<Output = ST>, ST: PositionalOrderExpr {
    type Output = (ST,);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(),)
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1) {}
impl<T, ST, T1, ST1> IntoPositionalOrderExpr for (T, T1) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr {
    type Output = (ST, ST1);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr>
    PositionalOrderExpr for (T, T1, T2) {}
impl<T, ST, T1, ST1, T2, ST2> IntoPositionalOrderExpr for (T, T1, T2) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr {
    type Output = (ST, ST1, ST2);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr> PositionalOrderExpr for (T, T1, T2, T3) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3> IntoPositionalOrderExpr for
    (T, T1, T2, T3) where T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr {
    type Output = (ST, ST1, ST2, ST3);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4) where T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr {
    type Output = (ST, ST1, ST2, ST3, ST4);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr>
    PositionalOrderExpr for (T, T1, T2, T3, T4, T5) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5>
    IntoPositionalOrderExpr for (T, T1, T2, T3, T4, T5) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr {
    type Output = (ST, ST1, ST2, ST3, ST4, ST5);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6>
    IntoPositionalOrderExpr for (T, T1, T2, T3, T4, T5, T6) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr {
    type Output = (ST, ST1, ST2, ST3, ST4, ST5, ST6);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7>
    IntoPositionalOrderExpr for (T, T1, T2, T3, T4, T5, T6, T7) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr {
    type Output = (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr>
    PositionalOrderExpr for (T, T1, T2, T3, T4, T5, T6, T7, T8) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8> IntoPositionalOrderExpr for (T, T1, T2, T3, T4, T5, T6, T7, T8) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr {
    type Output = (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr {
    type Output = (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr {
    type Output = (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr> PositionalOrderExpr
    for (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13>
    IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr> PositionalOrderExpr
    for (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14>
    IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
    where T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr> PositionalOrderExpr
    for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)
    {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)
    where T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17) where T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr> PositionalOrderExpr
    for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18) where T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19> IntoPositionalOrderExpr
    for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19) where T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr> PositionalOrderExpr
    for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20>
    IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20) where T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr,
    T21: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20, T21, ST21>
    IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21) where T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>,
    T21: IntoPositionalOrderExpr<Output = ST21>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr,
    ST21: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr(), self.21.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr,
    T21: PositionalOrderExpr, T22: PositionalOrderExpr> PositionalOrderExpr
    for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20, T21, ST21,
    T22, ST22> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>,
    T21: IntoPositionalOrderExpr<Output = ST21>,
    T22: IntoPositionalOrderExpr<Output = ST22>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr,
    ST21: PositionalOrderExpr, ST22: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr(), self.21.into_positional_expr(),
            self.22.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr,
    T21: PositionalOrderExpr, T22: PositionalOrderExpr,
    T23: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20, T21, ST21,
    T22, ST22, T23, ST23> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>,
    T21: IntoPositionalOrderExpr<Output = ST21>,
    T22: IntoPositionalOrderExpr<Output = ST22>,
    T23: IntoPositionalOrderExpr<Output = ST23>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr,
    ST21: PositionalOrderExpr, ST22: PositionalOrderExpr,
    ST23: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr(), self.21.into_positional_expr(),
            self.22.into_positional_expr(), self.23.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr,
    T21: PositionalOrderExpr, T22: PositionalOrderExpr,
    T23: PositionalOrderExpr, T24: PositionalOrderExpr> PositionalOrderExpr
    for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20, T21, ST21,
    T22, ST22, T23, ST23, T24, ST24> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>,
    T21: IntoPositionalOrderExpr<Output = ST21>,
    T22: IntoPositionalOrderExpr<Output = ST22>,
    T23: IntoPositionalOrderExpr<Output = ST23>,
    T24: IntoPositionalOrderExpr<Output = ST24>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr,
    ST21: PositionalOrderExpr, ST22: PositionalOrderExpr,
    ST23: PositionalOrderExpr, ST24: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
        ST24);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr(), self.21.into_positional_expr(),
            self.22.into_positional_expr(), self.23.into_positional_expr(),
            self.24.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr,
    T21: PositionalOrderExpr, T22: PositionalOrderExpr,
    T23: PositionalOrderExpr, T24: PositionalOrderExpr,
    T25: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20, T21, ST21,
    T22, ST22, T23, ST23, T24, ST24, T25, ST25> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>,
    T21: IntoPositionalOrderExpr<Output = ST21>,
    T22: IntoPositionalOrderExpr<Output = ST22>,
    T23: IntoPositionalOrderExpr<Output = ST23>,
    T24: IntoPositionalOrderExpr<Output = ST24>,
    T25: IntoPositionalOrderExpr<Output = ST25>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr,
    ST21: PositionalOrderExpr, ST22: PositionalOrderExpr,
    ST23: PositionalOrderExpr, ST24: PositionalOrderExpr,
    ST25: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
        ST24, ST25);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr(), self.21.into_positional_expr(),
            self.22.into_positional_expr(), self.23.into_positional_expr(),
            self.24.into_positional_expr(), self.25.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr,
    T21: PositionalOrderExpr, T22: PositionalOrderExpr,
    T23: PositionalOrderExpr, T24: PositionalOrderExpr,
    T25: PositionalOrderExpr, T26: PositionalOrderExpr> PositionalOrderExpr
    for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20, T21, ST21,
    T22, ST22, T23, ST23, T24, ST24, T25, ST25, T26, ST26>
    IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>,
    T21: IntoPositionalOrderExpr<Output = ST21>,
    T22: IntoPositionalOrderExpr<Output = ST22>,
    T23: IntoPositionalOrderExpr<Output = ST23>,
    T24: IntoPositionalOrderExpr<Output = ST24>,
    T25: IntoPositionalOrderExpr<Output = ST25>,
    T26: IntoPositionalOrderExpr<Output = ST26>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr,
    ST21: PositionalOrderExpr, ST22: PositionalOrderExpr,
    ST23: PositionalOrderExpr, ST24: PositionalOrderExpr,
    ST25: PositionalOrderExpr, ST26: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
        ST24, ST25, ST26);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr(), self.21.into_positional_expr(),
            self.22.into_positional_expr(), self.23.into_positional_expr(),
            self.24.into_positional_expr(), self.25.into_positional_expr(),
            self.26.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr,
    T21: PositionalOrderExpr, T22: PositionalOrderExpr,
    T23: PositionalOrderExpr, T24: PositionalOrderExpr,
    T25: PositionalOrderExpr, T26: PositionalOrderExpr,
    T27: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20, T21, ST21,
    T22, ST22, T23, ST23, T24, ST24, T25, ST25, T26, ST26, T27, ST27>
    IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>,
    T21: IntoPositionalOrderExpr<Output = ST21>,
    T22: IntoPositionalOrderExpr<Output = ST22>,
    T23: IntoPositionalOrderExpr<Output = ST23>,
    T24: IntoPositionalOrderExpr<Output = ST24>,
    T25: IntoPositionalOrderExpr<Output = ST25>,
    T26: IntoPositionalOrderExpr<Output = ST26>,
    T27: IntoPositionalOrderExpr<Output = ST27>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr,
    ST21: PositionalOrderExpr, ST22: PositionalOrderExpr,
    ST23: PositionalOrderExpr, ST24: PositionalOrderExpr,
    ST25: PositionalOrderExpr, ST26: PositionalOrderExpr,
    ST27: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
        ST24, ST25, ST26, ST27);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr(), self.21.into_positional_expr(),
            self.22.into_positional_expr(), self.23.into_positional_expr(),
            self.24.into_positional_expr(), self.25.into_positional_expr(),
            self.26.into_positional_expr(), self.27.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr,
    T21: PositionalOrderExpr, T22: PositionalOrderExpr,
    T23: PositionalOrderExpr, T24: PositionalOrderExpr,
    T25: PositionalOrderExpr, T26: PositionalOrderExpr,
    T27: PositionalOrderExpr, T28: PositionalOrderExpr> PositionalOrderExpr
    for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20, T21, ST21,
    T22, ST22, T23, ST23, T24, ST24, T25, ST25, T26, ST26, T27, ST27, T28,
    ST28> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>,
    T21: IntoPositionalOrderExpr<Output = ST21>,
    T22: IntoPositionalOrderExpr<Output = ST22>,
    T23: IntoPositionalOrderExpr<Output = ST23>,
    T24: IntoPositionalOrderExpr<Output = ST24>,
    T25: IntoPositionalOrderExpr<Output = ST25>,
    T26: IntoPositionalOrderExpr<Output = ST26>,
    T27: IntoPositionalOrderExpr<Output = ST27>,
    T28: IntoPositionalOrderExpr<Output = ST28>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr,
    ST21: PositionalOrderExpr, ST22: PositionalOrderExpr,
    ST23: PositionalOrderExpr, ST24: PositionalOrderExpr,
    ST25: PositionalOrderExpr, ST26: PositionalOrderExpr,
    ST27: PositionalOrderExpr, ST28: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
        ST24, ST25, ST26, ST27, ST28);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr(), self.21.into_positional_expr(),
            self.22.into_positional_expr(), self.23.into_positional_expr(),
            self.24.into_positional_expr(), self.25.into_positional_expr(),
            self.26.into_positional_expr(), self.27.into_positional_expr(),
            self.28.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr,
    T21: PositionalOrderExpr, T22: PositionalOrderExpr,
    T23: PositionalOrderExpr, T24: PositionalOrderExpr,
    T25: PositionalOrderExpr, T26: PositionalOrderExpr,
    T27: PositionalOrderExpr, T28: PositionalOrderExpr,
    T29: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20, T21, ST21,
    T22, ST22, T23, ST23, T24, ST24, T25, ST25, T26, ST26, T27, ST27, T28,
    ST28, T29, ST29> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29) where
    T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>,
    T21: IntoPositionalOrderExpr<Output = ST21>,
    T22: IntoPositionalOrderExpr<Output = ST22>,
    T23: IntoPositionalOrderExpr<Output = ST23>,
    T24: IntoPositionalOrderExpr<Output = ST24>,
    T25: IntoPositionalOrderExpr<Output = ST25>,
    T26: IntoPositionalOrderExpr<Output = ST26>,
    T27: IntoPositionalOrderExpr<Output = ST27>,
    T28: IntoPositionalOrderExpr<Output = ST28>,
    T29: IntoPositionalOrderExpr<Output = ST29>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr,
    ST21: PositionalOrderExpr, ST22: PositionalOrderExpr,
    ST23: PositionalOrderExpr, ST24: PositionalOrderExpr,
    ST25: PositionalOrderExpr, ST26: PositionalOrderExpr,
    ST27: PositionalOrderExpr, ST28: PositionalOrderExpr,
    ST29: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
        ST24, ST25, ST26, ST27, ST28, ST29);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr(), self.21.into_positional_expr(),
            self.22.into_positional_expr(), self.23.into_positional_expr(),
            self.24.into_positional_expr(), self.25.into_positional_expr(),
            self.26.into_positional_expr(), self.27.into_positional_expr(),
            self.28.into_positional_expr(), self.29.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr,
    T21: PositionalOrderExpr, T22: PositionalOrderExpr,
    T23: PositionalOrderExpr, T24: PositionalOrderExpr,
    T25: PositionalOrderExpr, T26: PositionalOrderExpr,
    T27: PositionalOrderExpr, T28: PositionalOrderExpr,
    T29: PositionalOrderExpr, T30: PositionalOrderExpr> PositionalOrderExpr
    for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20, T21, ST21,
    T22, ST22, T23, ST23, T24, ST24, T25, ST25, T26, ST26, T27, ST27, T28,
    ST28, T29, ST29, T30, ST30> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30)
    where T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>,
    T21: IntoPositionalOrderExpr<Output = ST21>,
    T22: IntoPositionalOrderExpr<Output = ST22>,
    T23: IntoPositionalOrderExpr<Output = ST23>,
    T24: IntoPositionalOrderExpr<Output = ST24>,
    T25: IntoPositionalOrderExpr<Output = ST25>,
    T26: IntoPositionalOrderExpr<Output = ST26>,
    T27: IntoPositionalOrderExpr<Output = ST27>,
    T28: IntoPositionalOrderExpr<Output = ST28>,
    T29: IntoPositionalOrderExpr<Output = ST29>,
    T30: IntoPositionalOrderExpr<Output = ST30>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr,
    ST21: PositionalOrderExpr, ST22: PositionalOrderExpr,
    ST23: PositionalOrderExpr, ST24: PositionalOrderExpr,
    ST25: PositionalOrderExpr, ST26: PositionalOrderExpr,
    ST27: PositionalOrderExpr, ST28: PositionalOrderExpr,
    ST29: PositionalOrderExpr, ST30: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
        ST24, ST25, ST26, ST27, ST28, ST29, ST30);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr(), self.21.into_positional_expr(),
            self.22.into_positional_expr(), self.23.into_positional_expr(),
            self.24.into_positional_expr(), self.25.into_positional_expr(),
            self.26.into_positional_expr(), self.27.into_positional_expr(),
            self.28.into_positional_expr(), self.29.into_positional_expr(),
            self.30.into_positional_expr())
    }
}
impl<T: PositionalOrderExpr, T1: PositionalOrderExpr, T2: PositionalOrderExpr,
    T3: PositionalOrderExpr, T4: PositionalOrderExpr, T5: PositionalOrderExpr,
    T6: PositionalOrderExpr, T7: PositionalOrderExpr, T8: PositionalOrderExpr,
    T9: PositionalOrderExpr, T10: PositionalOrderExpr,
    T11: PositionalOrderExpr, T12: PositionalOrderExpr,
    T13: PositionalOrderExpr, T14: PositionalOrderExpr,
    T15: PositionalOrderExpr, T16: PositionalOrderExpr,
    T17: PositionalOrderExpr, T18: PositionalOrderExpr,
    T19: PositionalOrderExpr, T20: PositionalOrderExpr,
    T21: PositionalOrderExpr, T22: PositionalOrderExpr,
    T23: PositionalOrderExpr, T24: PositionalOrderExpr,
    T25: PositionalOrderExpr, T26: PositionalOrderExpr,
    T27: PositionalOrderExpr, T28: PositionalOrderExpr,
    T29: PositionalOrderExpr, T30: PositionalOrderExpr,
    T31: PositionalOrderExpr> PositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
    {}
impl<T, ST, T1, ST1, T2, ST2, T3, ST3, T4, ST4, T5, ST5, T6, ST6, T7, ST7, T8,
    ST8, T9, ST9, T10, ST10, T11, ST11, T12, ST12, T13, ST13, T14, ST14, T15,
    ST15, T16, ST16, T17, ST17, T18, ST18, T19, ST19, T20, ST20, T21, ST21,
    T22, ST22, T23, ST23, T24, ST24, T25, ST25, T26, ST26, T27, ST27, T28,
    ST28, T29, ST29, T30, ST30, T31, ST31> IntoPositionalOrderExpr for
    (T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16,
    T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)
    where T: IntoPositionalOrderExpr<Output = ST>,
    T1: IntoPositionalOrderExpr<Output = ST1>,
    T2: IntoPositionalOrderExpr<Output = ST2>,
    T3: IntoPositionalOrderExpr<Output = ST3>,
    T4: IntoPositionalOrderExpr<Output = ST4>,
    T5: IntoPositionalOrderExpr<Output = ST5>,
    T6: IntoPositionalOrderExpr<Output = ST6>,
    T7: IntoPositionalOrderExpr<Output = ST7>,
    T8: IntoPositionalOrderExpr<Output = ST8>,
    T9: IntoPositionalOrderExpr<Output = ST9>,
    T10: IntoPositionalOrderExpr<Output = ST10>,
    T11: IntoPositionalOrderExpr<Output = ST11>,
    T12: IntoPositionalOrderExpr<Output = ST12>,
    T13: IntoPositionalOrderExpr<Output = ST13>,
    T14: IntoPositionalOrderExpr<Output = ST14>,
    T15: IntoPositionalOrderExpr<Output = ST15>,
    T16: IntoPositionalOrderExpr<Output = ST16>,
    T17: IntoPositionalOrderExpr<Output = ST17>,
    T18: IntoPositionalOrderExpr<Output = ST18>,
    T19: IntoPositionalOrderExpr<Output = ST19>,
    T20: IntoPositionalOrderExpr<Output = ST20>,
    T21: IntoPositionalOrderExpr<Output = ST21>,
    T22: IntoPositionalOrderExpr<Output = ST22>,
    T23: IntoPositionalOrderExpr<Output = ST23>,
    T24: IntoPositionalOrderExpr<Output = ST24>,
    T25: IntoPositionalOrderExpr<Output = ST25>,
    T26: IntoPositionalOrderExpr<Output = ST26>,
    T27: IntoPositionalOrderExpr<Output = ST27>,
    T28: IntoPositionalOrderExpr<Output = ST28>,
    T29: IntoPositionalOrderExpr<Output = ST29>,
    T30: IntoPositionalOrderExpr<Output = ST30>,
    T31: IntoPositionalOrderExpr<Output = ST31>, ST: PositionalOrderExpr,
    ST1: PositionalOrderExpr, ST2: PositionalOrderExpr,
    ST3: PositionalOrderExpr, ST4: PositionalOrderExpr,
    ST5: PositionalOrderExpr, ST6: PositionalOrderExpr,
    ST7: PositionalOrderExpr, ST8: PositionalOrderExpr,
    ST9: PositionalOrderExpr, ST10: PositionalOrderExpr,
    ST11: PositionalOrderExpr, ST12: PositionalOrderExpr,
    ST13: PositionalOrderExpr, ST14: PositionalOrderExpr,
    ST15: PositionalOrderExpr, ST16: PositionalOrderExpr,
    ST17: PositionalOrderExpr, ST18: PositionalOrderExpr,
    ST19: PositionalOrderExpr, ST20: PositionalOrderExpr,
    ST21: PositionalOrderExpr, ST22: PositionalOrderExpr,
    ST23: PositionalOrderExpr, ST24: PositionalOrderExpr,
    ST25: PositionalOrderExpr, ST26: PositionalOrderExpr,
    ST27: PositionalOrderExpr, ST28: PositionalOrderExpr,
    ST29: PositionalOrderExpr, ST30: PositionalOrderExpr,
    ST31: PositionalOrderExpr {
    type Output =
        (ST, ST1, ST2, ST3, ST4, ST5, ST6, ST7, ST8, ST9, ST10, ST11, ST12,
        ST13, ST14, ST15, ST16, ST17, ST18, ST19, ST20, ST21, ST22, ST23,
        ST24, ST25, ST26, ST27, ST28, ST29, ST30, ST31);
    fn into_positional_expr(self) -> Self::Output {
        (self.0.into_positional_expr(), self.1.into_positional_expr(),
            self.2.into_positional_expr(), self.3.into_positional_expr(),
            self.4.into_positional_expr(), self.5.into_positional_expr(),
            self.6.into_positional_expr(), self.7.into_positional_expr(),
            self.8.into_positional_expr(), self.9.into_positional_expr(),
            self.10.into_positional_expr(), self.11.into_positional_expr(),
            self.12.into_positional_expr(), self.13.into_positional_expr(),
            self.14.into_positional_expr(), self.15.into_positional_expr(),
            self.16.into_positional_expr(), self.17.into_positional_expr(),
            self.18.into_positional_expr(), self.19.into_positional_expr(),
            self.20.into_positional_expr(), self.21.into_positional_expr(),
            self.22.into_positional_expr(), self.23.into_positional_expr(),
            self.24.into_positional_expr(), self.25.into_positional_expr(),
            self.26.into_positional_expr(), self.27.into_positional_expr(),
            self.28.into_positional_expr(), self.29.into_positional_expr(),
            self.30.into_positional_expr(), self.31.into_positional_expr())
    }
}diesel_derives::__diesel_for_each_tuple!(impl_positional_order_expr_for_all_tuples);