这里有一个震惊的事实就是 match
居然不能用枚举方法匹配数值类型,也就是说 enum
是非常特殊的一种类型。譬如说下面的代码是可行的:
enum Title {
What,
The,
Fuck,
Rust,
}
fn main() {
let bar = Title::Fuck;
match bar {
Title::What => println!("What"),
Title::The => println!("The"),
Title::Fuck => println!("Fuck"),
Title::Rust => println!("Rust"),
}
}
然而如果我们用穷举的方法去处理 u8 这种可怜的数值类型的时候:
fn main() {
let fuck: u8 = 0;
match fuck {
0 => {}
1 => {}
2 => {}
3 => {}
4 => {}
5 => {}
6 => {}
7 => {}
8 => {}
9 => {}
10 => {}
11 => {}
12 => {}
13 => {}
14 => {}
15 => {}
16 => {}
17 => {}
18 => {}
19 => {}
20 => {}
21 => {}
22 => {}
23 => {}
24 => {}
25 => {}
26 => {}
27 => {}
28 => {}
29 => {}
30 => {}
31 => {}
32 => {}
33 => {}
34 => {}
35 => {}
36 => {}
37 => {}
38 => {}
39 => {}
40 => {}
41 => {}
42 => {}
43 => {}
44 => {}
45 => {}
46 => {}
47 => {}
48 => {}
49 => {}
50 => {}
51 => {}
52 => {}
53 => {}
54 => {}
55 => {}
56 => {}
57 => {}
58 => {}
59 => {}
60 => {}
61 => {}
62 => {}
63 => {}
64 => {}
65 => {}
66 => {}
67 => {}
68 => {}
69 => {}
70 => {}
71 => {}
72 => {}
73 => {}
74 => {}
75 => {}
76 => {}
77 => {}
78 => {}
79 => {}
80 => {}
81 => {}
82 => {}
83 => {}
84 => {}
85 => {}
86 => {}
87 => {}
88 => {}
89 => {}
90 => {}
91 => {}
92 => {}
93 => {}
94 => {}
95 => {}
96 => {}
97 => {}
98 => {}
99 => {}
100 => {}
101 => {}
102 => {}
103 => {}
104 => {}
105 => {}
106 => {}
107 => {}
108 => {}
109 => {}
110 => {}
111 => {}
112 => {}
113 => {}
114 => {}
115 => {}
116 => {}
117 => {}
118 => {}
119 => {}
120 => {}
121 => {}
122 => {}
123 => {}
124 => {}
125 => {}
126 => {}
127 => {}
128 => {}
129 => {}
130 => {}
131 => {}
132 => {}
133 => {}
134 => {}
135 => {}
136 => {}
137 => {}
138 => {}
139 => {}
140 => {}
141 => {}
142 => {}
143 => {}
144 => {}
145 => {}
146 => {}
147 => {}
148 => {}
149 => {}
150 => {}
151 => {}
152 => {}
153 => {}
154 => {}
155 => {}
156 => {}
157 => {}
158 => {}
159 => {}
160 => {}
161 => {}
162 => {}
163 => {}
164 => {}
165 => {}
166 => {}
167 => {}
168 => {}
169 => {}
170 => {}
171 => {}
172 => {}
173 => {}
174 => {}
175 => {}
176 => {}
177 => {}
178 => {}
179 => {}
180 => {}
181 => {}
182 => {}
183 => {}
184 => {}
185 => {}
186 => {}
187 => {}
188 => {}
189 => {}
190 => {}
191 => {}
192 => {}
193 => {}
194 => {}
195 => {}
196 => {}
197 => {}
198 => {}
199 => {}
200 => {}
201 => {}
202 => {}
203 => {}
204 => {}
205 => {}
206 => {}
207 => {}
208 => {}
209 => {}
210 => {}
211 => {}
212 => {}
213 => {}
214 => {}
215 => {}
216 => {}
217 => {}
218 => {}
219 => {}
220 => {}
221 => {}
222 => {}
223 => {}
224 => {}
225 => {}
226 => {}
227 => {}
228 => {}
229 => {}
230 => {}
231 => {}
232 => {}
233 => {}
234 => {}
235 => {}
236 => {}
237 => {}
238 => {}
239 => {}
240 => {}
241 => {}
242 => {}
243 => {}
244 => {}
245 => {}
246 => {}
247 => {}
248 => {}
249 => {}
250 => {}
251 => {}
252 => {}
253 => {}
254 => {}
255 => {}
}
}
您就会得到:
error[E0004]: non-exhaustive patterns: `_` not covered
--
>
src/main.rs:3:11
|
3 | match foo {
| ^^^ pattern `_` not covered
error: aborting due to previous error