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}