Skip to main content

dbin/
pvec.rs

1use crate::Pattern;
2
3pub struct PatternVec(Vec<Pattern>);
4impl PatternVec {
5    pub fn get(self) -> Vec<Pattern> {
6        self.0
7    }
8}
9impl From<Vec<Pattern>> for PatternVec {
10    fn from(v: Vec<Pattern>) -> PatternVec {
11        PatternVec(v.into())
12    }
13}
14impl From<()> for PatternVec {
15    fn from(_: ()) -> PatternVec {
16        PatternVec(vec![])
17    }
18}
19impl<A1: Into<Pattern>> From<A1> for PatternVec {
20    fn from(a1: A1) -> PatternVec {
21        PatternVec(vec![a1.into()])
22    }
23}
24impl<A1: Into<Pattern>> From<(A1,)> for PatternVec {
25    fn from(a1: (A1,)) -> PatternVec {
26        PatternVec(vec![a1.0.into()])
27    }
28}
29impl<A1, A2> From<(A1, A2)> for PatternVec
30where
31    A1: Into<Pattern>,
32    A2: Into<Pattern>,
33{
34    fn from(a: (A1, A2)) -> PatternVec {
35        PatternVec(vec![a.0.into(), a.1.into()])
36    }
37}
38impl<A1, A2, A3> From<(A1, A2, A3)> for PatternVec
39where
40    A1: Into<Pattern>,
41    A2: Into<Pattern>,
42    A3: Into<Pattern>,
43{
44    fn from(a: (A1, A2, A3)) -> PatternVec {
45        PatternVec(vec![a.0.into(), a.1.into(), a.2.into()])
46    }
47}
48impl<A1, A2, A3, A4> From<(A1, A2, A3, A4)> for PatternVec
49where
50    A1: Into<Pattern>,
51    A2: Into<Pattern>,
52    A3: Into<Pattern>,
53    A4: Into<Pattern>,
54{
55    fn from(a: (A1, A2, A3, A4)) -> PatternVec {
56        PatternVec(vec![a.0.into(), a.1.into(), a.2.into(), a.3.into()])
57    }
58}
59impl<A1, A2, A3, A4, A5> From<(A1, A2, A3, A4, A5)> for PatternVec
60where
61    A1: Into<Pattern>,
62    A2: Into<Pattern>,
63    A3: Into<Pattern>,
64    A4: Into<Pattern>,
65    A5: Into<Pattern>,
66{
67    fn from(a: (A1, A2, A3, A4, A5)) -> PatternVec {
68        PatternVec(vec![
69            a.0.into(),
70            a.1.into(),
71            a.2.into(),
72            a.3.into(),
73            a.4.into(),
74        ])
75    }
76}
77impl<A1, A2, A3, A4, A5, A6> From<(A1, A2, A3, A4, A5, A6)> for PatternVec
78where
79    A1: Into<Pattern>,
80    A2: Into<Pattern>,
81    A3: Into<Pattern>,
82    A4: Into<Pattern>,
83    A5: Into<Pattern>,
84    A6: Into<Pattern>,
85{
86    fn from(a: (A1, A2, A3, A4, A5, A6)) -> PatternVec {
87        PatternVec(vec![
88            a.0.into(),
89            a.1.into(),
90            a.2.into(),
91            a.3.into(),
92            a.4.into(),
93            a.5.into(),
94        ])
95    }
96}
97impl<A1, A2, A3, A4, A5, A6, A7> From<(A1, A2, A3, A4, A5, A6, A7)> for PatternVec
98where
99    A1: Into<Pattern>,
100    A2: Into<Pattern>,
101    A3: Into<Pattern>,
102    A4: Into<Pattern>,
103    A5: Into<Pattern>,
104    A6: Into<Pattern>,
105    A7: Into<Pattern>,
106{
107    fn from(a: (A1, A2, A3, A4, A5, A6, A7)) -> PatternVec {
108        PatternVec(vec![
109            a.0.into(),
110            a.1.into(),
111            a.2.into(),
112            a.3.into(),
113            a.4.into(),
114            a.5.into(),
115            a.6.into(),
116        ])
117    }
118}
119impl<A1, A2, A3, A4, A5, A6, A7, A8> From<(A1, A2, A3, A4, A5, A6, A7, A8)> for PatternVec
120where
121    A1: Into<Pattern>,
122    A2: Into<Pattern>,
123    A3: Into<Pattern>,
124    A4: Into<Pattern>,
125    A5: Into<Pattern>,
126    A6: Into<Pattern>,
127    A7: Into<Pattern>,
128    A8: Into<Pattern>,
129{
130    fn from(a: (A1, A2, A3, A4, A5, A6, A7, A8)) -> PatternVec {
131        PatternVec(vec![
132            a.0.into(),
133            a.1.into(),
134            a.2.into(),
135            a.3.into(),
136            a.4.into(),
137            a.5.into(),
138            a.6.into(),
139            a.7.into(),
140        ])
141    }
142}