1#[doc = "Permutation by 2"]
4pub trait TuplePermutations2 {
5 type Output;
6 #[doc = "Permutation by 2"]
7 fn permutations_2(self) -> Self::Output;
8}
9impl<T0: Clone, T1: Clone> TuplePermutations2 for (T0, T1) {
10 type Output = ((T0, T1), (T1, T0));
11 fn permutations_2(self) -> Self::Output {
12 ((self.0.clone(), self.1.clone()), (self.1, self.0))
13 }
14}
15impl<T0: Clone, T1: Clone, T2: Clone> TuplePermutations2 for (T0, T1, T2) {
16 type Output = ((T0, T1), (T0, T2), (T1, T0), (T1, T2), (T2, T0), (T2, T1));
17 fn permutations_2(self) -> Self::Output {
18 ((self.0.clone(), self.1.clone()), (self.0.clone(), self.2.clone()), (self.1.clone(), self.0.clone()), (self.1.clone(), self.2.clone()), (self.2.clone(), self.0), (self.2, self.1))
19 }
20}
21impl<T0: Clone, T1: Clone, T2: Clone, T3: Clone> TuplePermutations2 for (T0, T1, T2, T3) {
22 type Output = ((T0, T1), (T0, T2), (T0, T3), (T1, T0), (T1, T2), (T1, T3), (T2, T0), (T2, T1), (T2, T3), (T3, T0), (T3, T1), (T3, T2));
23 fn permutations_2(self) -> Self::Output {
24 ((self.0.clone(), self.1.clone()), (self.0.clone(), self.2.clone()), (self.0.clone(), self.3.clone()), (self.1.clone(), self.0.clone()), (self.1.clone(), self.2.clone()), (self.1.clone(), self.3.clone()), (self.2.clone(), self.0.clone()), (self.2.clone(), self.1.clone()), (self.2.clone(), self.3.clone()), (self.3.clone(), self.0), (self.3.clone(), self.1), (self.3, self.2))
25 }
26}
27impl<T0: Clone, T1: Clone, T2: Clone, T3: Clone, T4: Clone> TuplePermutations2 for (T0, T1, T2, T3, T4) {
28 type Output = ((T0, T1), (T0, T2), (T0, T3), (T0, T4), (T1, T0), (T1, T2), (T1, T3), (T1, T4), (T2, T0), (T2, T1), (T2, T3), (T2, T4), (T3, T0), (T3, T1), (T3, T2), (T3, T4), (T4, T0), (T4, T1), (T4, T2), (T4, T3));
29 fn permutations_2(self) -> Self::Output {
30 ((self.0.clone(), self.1.clone()), (self.0.clone(), self.2.clone()), (self.0.clone(), self.3.clone()), (self.0.clone(), self.4.clone()), (self.1.clone(), self.0.clone()), (self.1.clone(), self.2.clone()), (self.1.clone(), self.3.clone()), (self.1.clone(), self.4.clone()), (self.2.clone(), self.0.clone()), (self.2.clone(), self.1.clone()), (self.2.clone(), self.3.clone()), (self.2.clone(), self.4.clone()), (self.3.clone(), self.0.clone()), (self.3.clone(), self.1.clone()), (self.3.clone(), self.2.clone()), (self.3.clone(), self.4.clone()), (self.4.clone(), self.0), (self.4.clone(), self.1), (self.4.clone(), self.2), (self.4, self.3))
31 }
32}
33impl<T0: Clone, T1: Clone, T2: Clone, T3: Clone, T4: Clone, T5: Clone> TuplePermutations2 for (T0, T1, T2, T3, T4, T5) {
34 type Output = ((T0, T1), (T0, T2), (T0, T3), (T0, T4), (T0, T5), (T1, T0), (T1, T2), (T1, T3), (T1, T4), (T1, T5), (T2, T0), (T2, T1), (T2, T3), (T2, T4), (T2, T5), (T3, T0), (T3, T1), (T3, T2), (T3, T4), (T3, T5), (T4, T0), (T4, T1), (T4, T2), (T4, T3), (T4, T5), (T5, T0), (T5, T1), (T5, T2), (T5, T3), (T5, T4));
35 fn permutations_2(self) -> Self::Output {
36 ((self.0.clone(), self.1.clone()), (self.0.clone(), self.2.clone()), (self.0.clone(), self.3.clone()), (self.0.clone(), self.4.clone()), (self.0.clone(), self.5.clone()), (self.1.clone(), self.0.clone()), (self.1.clone(), self.2.clone()), (self.1.clone(), self.3.clone()), (self.1.clone(), self.4.clone()), (self.1.clone(), self.5.clone()), (self.2.clone(), self.0.clone()), (self.2.clone(), self.1.clone()), (self.2.clone(), self.3.clone()), (self.2.clone(), self.4.clone()), (self.2.clone(), self.5.clone()), (self.3.clone(), self.0.clone()), (self.3.clone(), self.1.clone()), (self.3.clone(), self.2.clone()), (self.3.clone(), self.4.clone()), (self.3.clone(), self.5.clone()), (self.4.clone(), self.0.clone()), (self.4.clone(), self.1.clone()), (self.4.clone(), self.2.clone()), (self.4.clone(), self.3.clone()), (self.4.clone(), self.5.clone()), (self.5.clone(), self.0), (self.5.clone(), self.1), (self.5.clone(), self.2), (self.5.clone(), self.3), (self.5, self.4))
37 }
38}
39#[doc = "Permutation by 3"]
40pub trait TuplePermutations3 {
41 type Output;
42 #[doc = "Permutation by 3"]
43 fn permutations_3(self) -> Self::Output;
44}
45impl<T0: Clone, T1: Clone, T2: Clone> TuplePermutations3 for (T0, T1, T2) {
46 type Output = ((T0, T1, T2), (T0, T2, T1), (T1, T0, T2), (T1, T2, T0), (T2, T0, T1), (T2, T1, T0));
47 fn permutations_3(self) -> Self::Output {
48 ((self.0.clone(), self.1.clone(), self.2.clone()), (self.0.clone(), self.2.clone(), self.1.clone()), (self.1.clone(), self.0.clone(), self.2.clone()), (self.1.clone(), self.2.clone(), self.0.clone()), (self.2.clone(), self.0.clone(), self.1.clone()), (self.2, self.1, self.0))
49 }
50}