1
2#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum DominoTiles {
5 DominoTileHorizontalBack,
7 DominoTileHorizontalDash00Dash00,
9 DominoTileHorizontalDash00Dash01,
11 DominoTileHorizontalDash00Dash02,
13 DominoTileHorizontalDash00Dash03,
15 DominoTileHorizontalDash00Dash04,
17 DominoTileHorizontalDash00Dash05,
19 DominoTileHorizontalDash00Dash06,
21 DominoTileHorizontalDash01Dash00,
23 DominoTileHorizontalDash01Dash01,
25 DominoTileHorizontalDash01Dash02,
27 DominoTileHorizontalDash01Dash03,
29 DominoTileHorizontalDash01Dash04,
31 DominoTileHorizontalDash01Dash05,
33 DominoTileHorizontalDash01Dash06,
35 DominoTileHorizontalDash02Dash00,
37 DominoTileHorizontalDash02Dash01,
39 DominoTileHorizontalDash02Dash02,
41 DominoTileHorizontalDash02Dash03,
43 DominoTileHorizontalDash02Dash04,
45 DominoTileHorizontalDash02Dash05,
47 DominoTileHorizontalDash02Dash06,
49 DominoTileHorizontalDash03Dash00,
51 DominoTileHorizontalDash03Dash01,
53 DominoTileHorizontalDash03Dash02,
55 DominoTileHorizontalDash03Dash03,
57 DominoTileHorizontalDash03Dash04,
59 DominoTileHorizontalDash03Dash05,
61 DominoTileHorizontalDash03Dash06,
63 DominoTileHorizontalDash04Dash00,
65 DominoTileHorizontalDash04Dash01,
67 DominoTileHorizontalDash04Dash02,
69 DominoTileHorizontalDash04Dash03,
71 DominoTileHorizontalDash04Dash04,
73 DominoTileHorizontalDash04Dash05,
75 DominoTileHorizontalDash04Dash06,
77 DominoTileHorizontalDash05Dash00,
79 DominoTileHorizontalDash05Dash01,
81 DominoTileHorizontalDash05Dash02,
83 DominoTileHorizontalDash05Dash03,
85 DominoTileHorizontalDash05Dash04,
87 DominoTileHorizontalDash05Dash05,
89 DominoTileHorizontalDash05Dash06,
91 DominoTileHorizontalDash06Dash00,
93 DominoTileHorizontalDash06Dash01,
95 DominoTileHorizontalDash06Dash02,
97 DominoTileHorizontalDash06Dash03,
99 DominoTileHorizontalDash06Dash04,
101 DominoTileHorizontalDash06Dash05,
103 DominoTileHorizontalDash06Dash06,
105 DominoTileVerticalBack,
107 DominoTileVerticalDash00Dash00,
109 DominoTileVerticalDash00Dash01,
111 DominoTileVerticalDash00Dash02,
113 DominoTileVerticalDash00Dash03,
115 DominoTileVerticalDash00Dash04,
117 DominoTileVerticalDash00Dash05,
119 DominoTileVerticalDash00Dash06,
121 DominoTileVerticalDash01Dash00,
123 DominoTileVerticalDash01Dash01,
125 DominoTileVerticalDash01Dash02,
127 DominoTileVerticalDash01Dash03,
129 DominoTileVerticalDash01Dash04,
131 DominoTileVerticalDash01Dash05,
133 DominoTileVerticalDash01Dash06,
135 DominoTileVerticalDash02Dash00,
137 DominoTileVerticalDash02Dash01,
139 DominoTileVerticalDash02Dash02,
141 DominoTileVerticalDash02Dash03,
143 DominoTileVerticalDash02Dash04,
145 DominoTileVerticalDash02Dash05,
147 DominoTileVerticalDash02Dash06,
149 DominoTileVerticalDash03Dash00,
151 DominoTileVerticalDash03Dash01,
153 DominoTileVerticalDash03Dash02,
155 DominoTileVerticalDash03Dash03,
157 DominoTileVerticalDash03Dash04,
159 DominoTileVerticalDash03Dash05,
161 DominoTileVerticalDash03Dash06,
163 DominoTileVerticalDash04Dash00,
165 DominoTileVerticalDash04Dash01,
167 DominoTileVerticalDash04Dash02,
169 DominoTileVerticalDash04Dash03,
171 DominoTileVerticalDash04Dash04,
173 DominoTileVerticalDash04Dash05,
175 DominoTileVerticalDash04Dash06,
177 DominoTileVerticalDash05Dash00,
179 DominoTileVerticalDash05Dash01,
181 DominoTileVerticalDash05Dash02,
183 DominoTileVerticalDash05Dash03,
185 DominoTileVerticalDash05Dash04,
187 DominoTileVerticalDash05Dash05,
189 DominoTileVerticalDash05Dash06,
191 DominoTileVerticalDash06Dash00,
193 DominoTileVerticalDash06Dash01,
195 DominoTileVerticalDash06Dash02,
197 DominoTileVerticalDash06Dash03,
199 DominoTileVerticalDash06Dash04,
201 DominoTileVerticalDash06Dash05,
203 DominoTileVerticalDash06Dash06,
205}
206
207impl Into<char> for DominoTiles {
208 fn into(self) -> char {
209 match self {
210 DominoTiles::DominoTileHorizontalBack => '🀰',
211 DominoTiles::DominoTileHorizontalDash00Dash00 => '🀱',
212 DominoTiles::DominoTileHorizontalDash00Dash01 => '🀲',
213 DominoTiles::DominoTileHorizontalDash00Dash02 => '🀳',
214 DominoTiles::DominoTileHorizontalDash00Dash03 => '🀴',
215 DominoTiles::DominoTileHorizontalDash00Dash04 => '🀵',
216 DominoTiles::DominoTileHorizontalDash00Dash05 => '🀶',
217 DominoTiles::DominoTileHorizontalDash00Dash06 => '🀷',
218 DominoTiles::DominoTileHorizontalDash01Dash00 => '🀸',
219 DominoTiles::DominoTileHorizontalDash01Dash01 => '🀹',
220 DominoTiles::DominoTileHorizontalDash01Dash02 => '🀺',
221 DominoTiles::DominoTileHorizontalDash01Dash03 => '🀻',
222 DominoTiles::DominoTileHorizontalDash01Dash04 => '🀼',
223 DominoTiles::DominoTileHorizontalDash01Dash05 => '🀽',
224 DominoTiles::DominoTileHorizontalDash01Dash06 => '🀾',
225 DominoTiles::DominoTileHorizontalDash02Dash00 => '🀿',
226 DominoTiles::DominoTileHorizontalDash02Dash01 => '🁀',
227 DominoTiles::DominoTileHorizontalDash02Dash02 => '🁁',
228 DominoTiles::DominoTileHorizontalDash02Dash03 => '🁂',
229 DominoTiles::DominoTileHorizontalDash02Dash04 => '🁃',
230 DominoTiles::DominoTileHorizontalDash02Dash05 => '🁄',
231 DominoTiles::DominoTileHorizontalDash02Dash06 => '🁅',
232 DominoTiles::DominoTileHorizontalDash03Dash00 => '🁆',
233 DominoTiles::DominoTileHorizontalDash03Dash01 => '🁇',
234 DominoTiles::DominoTileHorizontalDash03Dash02 => '🁈',
235 DominoTiles::DominoTileHorizontalDash03Dash03 => '🁉',
236 DominoTiles::DominoTileHorizontalDash03Dash04 => '🁊',
237 DominoTiles::DominoTileHorizontalDash03Dash05 => '🁋',
238 DominoTiles::DominoTileHorizontalDash03Dash06 => '🁌',
239 DominoTiles::DominoTileHorizontalDash04Dash00 => '🁍',
240 DominoTiles::DominoTileHorizontalDash04Dash01 => '🁎',
241 DominoTiles::DominoTileHorizontalDash04Dash02 => '🁏',
242 DominoTiles::DominoTileHorizontalDash04Dash03 => '🁐',
243 DominoTiles::DominoTileHorizontalDash04Dash04 => '🁑',
244 DominoTiles::DominoTileHorizontalDash04Dash05 => '🁒',
245 DominoTiles::DominoTileHorizontalDash04Dash06 => '🁓',
246 DominoTiles::DominoTileHorizontalDash05Dash00 => '🁔',
247 DominoTiles::DominoTileHorizontalDash05Dash01 => '🁕',
248 DominoTiles::DominoTileHorizontalDash05Dash02 => '🁖',
249 DominoTiles::DominoTileHorizontalDash05Dash03 => '🁗',
250 DominoTiles::DominoTileHorizontalDash05Dash04 => '🁘',
251 DominoTiles::DominoTileHorizontalDash05Dash05 => '🁙',
252 DominoTiles::DominoTileHorizontalDash05Dash06 => '🁚',
253 DominoTiles::DominoTileHorizontalDash06Dash00 => '🁛',
254 DominoTiles::DominoTileHorizontalDash06Dash01 => '🁜',
255 DominoTiles::DominoTileHorizontalDash06Dash02 => '🁝',
256 DominoTiles::DominoTileHorizontalDash06Dash03 => '🁞',
257 DominoTiles::DominoTileHorizontalDash06Dash04 => '🁟',
258 DominoTiles::DominoTileHorizontalDash06Dash05 => '🁠',
259 DominoTiles::DominoTileHorizontalDash06Dash06 => '🁡',
260 DominoTiles::DominoTileVerticalBack => '🁢',
261 DominoTiles::DominoTileVerticalDash00Dash00 => '🁣',
262 DominoTiles::DominoTileVerticalDash00Dash01 => '🁤',
263 DominoTiles::DominoTileVerticalDash00Dash02 => '🁥',
264 DominoTiles::DominoTileVerticalDash00Dash03 => '🁦',
265 DominoTiles::DominoTileVerticalDash00Dash04 => '🁧',
266 DominoTiles::DominoTileVerticalDash00Dash05 => '🁨',
267 DominoTiles::DominoTileVerticalDash00Dash06 => '🁩',
268 DominoTiles::DominoTileVerticalDash01Dash00 => '🁪',
269 DominoTiles::DominoTileVerticalDash01Dash01 => '🁫',
270 DominoTiles::DominoTileVerticalDash01Dash02 => '🁬',
271 DominoTiles::DominoTileVerticalDash01Dash03 => '🁭',
272 DominoTiles::DominoTileVerticalDash01Dash04 => '🁮',
273 DominoTiles::DominoTileVerticalDash01Dash05 => '🁯',
274 DominoTiles::DominoTileVerticalDash01Dash06 => '🁰',
275 DominoTiles::DominoTileVerticalDash02Dash00 => '🁱',
276 DominoTiles::DominoTileVerticalDash02Dash01 => '🁲',
277 DominoTiles::DominoTileVerticalDash02Dash02 => '🁳',
278 DominoTiles::DominoTileVerticalDash02Dash03 => '🁴',
279 DominoTiles::DominoTileVerticalDash02Dash04 => '🁵',
280 DominoTiles::DominoTileVerticalDash02Dash05 => '🁶',
281 DominoTiles::DominoTileVerticalDash02Dash06 => '🁷',
282 DominoTiles::DominoTileVerticalDash03Dash00 => '🁸',
283 DominoTiles::DominoTileVerticalDash03Dash01 => '🁹',
284 DominoTiles::DominoTileVerticalDash03Dash02 => '🁺',
285 DominoTiles::DominoTileVerticalDash03Dash03 => '🁻',
286 DominoTiles::DominoTileVerticalDash03Dash04 => '🁼',
287 DominoTiles::DominoTileVerticalDash03Dash05 => '🁽',
288 DominoTiles::DominoTileVerticalDash03Dash06 => '🁾',
289 DominoTiles::DominoTileVerticalDash04Dash00 => '🁿',
290 DominoTiles::DominoTileVerticalDash04Dash01 => '🂀',
291 DominoTiles::DominoTileVerticalDash04Dash02 => '🂁',
292 DominoTiles::DominoTileVerticalDash04Dash03 => '🂂',
293 DominoTiles::DominoTileVerticalDash04Dash04 => '🂃',
294 DominoTiles::DominoTileVerticalDash04Dash05 => '🂄',
295 DominoTiles::DominoTileVerticalDash04Dash06 => '🂅',
296 DominoTiles::DominoTileVerticalDash05Dash00 => '🂆',
297 DominoTiles::DominoTileVerticalDash05Dash01 => '🂇',
298 DominoTiles::DominoTileVerticalDash05Dash02 => '🂈',
299 DominoTiles::DominoTileVerticalDash05Dash03 => '🂉',
300 DominoTiles::DominoTileVerticalDash05Dash04 => '🂊',
301 DominoTiles::DominoTileVerticalDash05Dash05 => '🂋',
302 DominoTiles::DominoTileVerticalDash05Dash06 => '🂌',
303 DominoTiles::DominoTileVerticalDash06Dash00 => '🂍',
304 DominoTiles::DominoTileVerticalDash06Dash01 => '🂎',
305 DominoTiles::DominoTileVerticalDash06Dash02 => '🂏',
306 DominoTiles::DominoTileVerticalDash06Dash03 => '🂐',
307 DominoTiles::DominoTileVerticalDash06Dash04 => '🂑',
308 DominoTiles::DominoTileVerticalDash06Dash05 => '🂒',
309 DominoTiles::DominoTileVerticalDash06Dash06 => '🂓',
310 }
311 }
312}
313
314impl std::convert::TryFrom<char> for DominoTiles {
315 type Error = ();
316 fn try_from(c: char) -> Result<Self, Self::Error> {
317 match c {
318 '🀰' => Ok(DominoTiles::DominoTileHorizontalBack),
319 '🀱' => Ok(DominoTiles::DominoTileHorizontalDash00Dash00),
320 '🀲' => Ok(DominoTiles::DominoTileHorizontalDash00Dash01),
321 '🀳' => Ok(DominoTiles::DominoTileHorizontalDash00Dash02),
322 '🀴' => Ok(DominoTiles::DominoTileHorizontalDash00Dash03),
323 '🀵' => Ok(DominoTiles::DominoTileHorizontalDash00Dash04),
324 '🀶' => Ok(DominoTiles::DominoTileHorizontalDash00Dash05),
325 '🀷' => Ok(DominoTiles::DominoTileHorizontalDash00Dash06),
326 '🀸' => Ok(DominoTiles::DominoTileHorizontalDash01Dash00),
327 '🀹' => Ok(DominoTiles::DominoTileHorizontalDash01Dash01),
328 '🀺' => Ok(DominoTiles::DominoTileHorizontalDash01Dash02),
329 '🀻' => Ok(DominoTiles::DominoTileHorizontalDash01Dash03),
330 '🀼' => Ok(DominoTiles::DominoTileHorizontalDash01Dash04),
331 '🀽' => Ok(DominoTiles::DominoTileHorizontalDash01Dash05),
332 '🀾' => Ok(DominoTiles::DominoTileHorizontalDash01Dash06),
333 '🀿' => Ok(DominoTiles::DominoTileHorizontalDash02Dash00),
334 '🁀' => Ok(DominoTiles::DominoTileHorizontalDash02Dash01),
335 '🁁' => Ok(DominoTiles::DominoTileHorizontalDash02Dash02),
336 '🁂' => Ok(DominoTiles::DominoTileHorizontalDash02Dash03),
337 '🁃' => Ok(DominoTiles::DominoTileHorizontalDash02Dash04),
338 '🁄' => Ok(DominoTiles::DominoTileHorizontalDash02Dash05),
339 '🁅' => Ok(DominoTiles::DominoTileHorizontalDash02Dash06),
340 '🁆' => Ok(DominoTiles::DominoTileHorizontalDash03Dash00),
341 '🁇' => Ok(DominoTiles::DominoTileHorizontalDash03Dash01),
342 '🁈' => Ok(DominoTiles::DominoTileHorizontalDash03Dash02),
343 '🁉' => Ok(DominoTiles::DominoTileHorizontalDash03Dash03),
344 '🁊' => Ok(DominoTiles::DominoTileHorizontalDash03Dash04),
345 '🁋' => Ok(DominoTiles::DominoTileHorizontalDash03Dash05),
346 '🁌' => Ok(DominoTiles::DominoTileHorizontalDash03Dash06),
347 '🁍' => Ok(DominoTiles::DominoTileHorizontalDash04Dash00),
348 '🁎' => Ok(DominoTiles::DominoTileHorizontalDash04Dash01),
349 '🁏' => Ok(DominoTiles::DominoTileHorizontalDash04Dash02),
350 '🁐' => Ok(DominoTiles::DominoTileHorizontalDash04Dash03),
351 '🁑' => Ok(DominoTiles::DominoTileHorizontalDash04Dash04),
352 '🁒' => Ok(DominoTiles::DominoTileHorizontalDash04Dash05),
353 '🁓' => Ok(DominoTiles::DominoTileHorizontalDash04Dash06),
354 '🁔' => Ok(DominoTiles::DominoTileHorizontalDash05Dash00),
355 '🁕' => Ok(DominoTiles::DominoTileHorizontalDash05Dash01),
356 '🁖' => Ok(DominoTiles::DominoTileHorizontalDash05Dash02),
357 '🁗' => Ok(DominoTiles::DominoTileHorizontalDash05Dash03),
358 '🁘' => Ok(DominoTiles::DominoTileHorizontalDash05Dash04),
359 '🁙' => Ok(DominoTiles::DominoTileHorizontalDash05Dash05),
360 '🁚' => Ok(DominoTiles::DominoTileHorizontalDash05Dash06),
361 '🁛' => Ok(DominoTiles::DominoTileHorizontalDash06Dash00),
362 '🁜' => Ok(DominoTiles::DominoTileHorizontalDash06Dash01),
363 '🁝' => Ok(DominoTiles::DominoTileHorizontalDash06Dash02),
364 '🁞' => Ok(DominoTiles::DominoTileHorizontalDash06Dash03),
365 '🁟' => Ok(DominoTiles::DominoTileHorizontalDash06Dash04),
366 '🁠' => Ok(DominoTiles::DominoTileHorizontalDash06Dash05),
367 '🁡' => Ok(DominoTiles::DominoTileHorizontalDash06Dash06),
368 '🁢' => Ok(DominoTiles::DominoTileVerticalBack),
369 '🁣' => Ok(DominoTiles::DominoTileVerticalDash00Dash00),
370 '🁤' => Ok(DominoTiles::DominoTileVerticalDash00Dash01),
371 '🁥' => Ok(DominoTiles::DominoTileVerticalDash00Dash02),
372 '🁦' => Ok(DominoTiles::DominoTileVerticalDash00Dash03),
373 '🁧' => Ok(DominoTiles::DominoTileVerticalDash00Dash04),
374 '🁨' => Ok(DominoTiles::DominoTileVerticalDash00Dash05),
375 '🁩' => Ok(DominoTiles::DominoTileVerticalDash00Dash06),
376 '🁪' => Ok(DominoTiles::DominoTileVerticalDash01Dash00),
377 '🁫' => Ok(DominoTiles::DominoTileVerticalDash01Dash01),
378 '🁬' => Ok(DominoTiles::DominoTileVerticalDash01Dash02),
379 '🁭' => Ok(DominoTiles::DominoTileVerticalDash01Dash03),
380 '🁮' => Ok(DominoTiles::DominoTileVerticalDash01Dash04),
381 '🁯' => Ok(DominoTiles::DominoTileVerticalDash01Dash05),
382 '🁰' => Ok(DominoTiles::DominoTileVerticalDash01Dash06),
383 '🁱' => Ok(DominoTiles::DominoTileVerticalDash02Dash00),
384 '🁲' => Ok(DominoTiles::DominoTileVerticalDash02Dash01),
385 '🁳' => Ok(DominoTiles::DominoTileVerticalDash02Dash02),
386 '🁴' => Ok(DominoTiles::DominoTileVerticalDash02Dash03),
387 '🁵' => Ok(DominoTiles::DominoTileVerticalDash02Dash04),
388 '🁶' => Ok(DominoTiles::DominoTileVerticalDash02Dash05),
389 '🁷' => Ok(DominoTiles::DominoTileVerticalDash02Dash06),
390 '🁸' => Ok(DominoTiles::DominoTileVerticalDash03Dash00),
391 '🁹' => Ok(DominoTiles::DominoTileVerticalDash03Dash01),
392 '🁺' => Ok(DominoTiles::DominoTileVerticalDash03Dash02),
393 '🁻' => Ok(DominoTiles::DominoTileVerticalDash03Dash03),
394 '🁼' => Ok(DominoTiles::DominoTileVerticalDash03Dash04),
395 '🁽' => Ok(DominoTiles::DominoTileVerticalDash03Dash05),
396 '🁾' => Ok(DominoTiles::DominoTileVerticalDash03Dash06),
397 '🁿' => Ok(DominoTiles::DominoTileVerticalDash04Dash00),
398 '🂀' => Ok(DominoTiles::DominoTileVerticalDash04Dash01),
399 '🂁' => Ok(DominoTiles::DominoTileVerticalDash04Dash02),
400 '🂂' => Ok(DominoTiles::DominoTileVerticalDash04Dash03),
401 '🂃' => Ok(DominoTiles::DominoTileVerticalDash04Dash04),
402 '🂄' => Ok(DominoTiles::DominoTileVerticalDash04Dash05),
403 '🂅' => Ok(DominoTiles::DominoTileVerticalDash04Dash06),
404 '🂆' => Ok(DominoTiles::DominoTileVerticalDash05Dash00),
405 '🂇' => Ok(DominoTiles::DominoTileVerticalDash05Dash01),
406 '🂈' => Ok(DominoTiles::DominoTileVerticalDash05Dash02),
407 '🂉' => Ok(DominoTiles::DominoTileVerticalDash05Dash03),
408 '🂊' => Ok(DominoTiles::DominoTileVerticalDash05Dash04),
409 '🂋' => Ok(DominoTiles::DominoTileVerticalDash05Dash05),
410 '🂌' => Ok(DominoTiles::DominoTileVerticalDash05Dash06),
411 '🂍' => Ok(DominoTiles::DominoTileVerticalDash06Dash00),
412 '🂎' => Ok(DominoTiles::DominoTileVerticalDash06Dash01),
413 '🂏' => Ok(DominoTiles::DominoTileVerticalDash06Dash02),
414 '🂐' => Ok(DominoTiles::DominoTileVerticalDash06Dash03),
415 '🂑' => Ok(DominoTiles::DominoTileVerticalDash06Dash04),
416 '🂒' => Ok(DominoTiles::DominoTileVerticalDash06Dash05),
417 '🂓' => Ok(DominoTiles::DominoTileVerticalDash06Dash06),
418 _ => Err(()),
419 }
420 }
421}
422
423impl Into<u32> for DominoTiles {
424 fn into(self) -> u32 {
425 let c: char = self.into();
426 let hex = c
427 .escape_unicode()
428 .to_string()
429 .replace("\\u{", "")
430 .replace("}", "");
431 u32::from_str_radix(&hex, 16).unwrap()
432 }
433}
434
435impl std::convert::TryFrom<u32> for DominoTiles {
436 type Error = ();
437 fn try_from(u: u32) -> Result<Self, Self::Error> {
438 if let Ok(c) = char::try_from(u) {
439 Self::try_from(c)
440 } else {
441 Err(())
442 }
443 }
444}
445
446impl Iterator for DominoTiles {
447 type Item = Self;
448 fn next(&mut self) -> Option<Self> {
449 let index: u32 = (*self).into();
450 use std::convert::TryFrom;
451 Self::try_from(index + 1).ok()
452 }
453}
454
455impl DominoTiles {
456 pub fn new() -> Self {
458 DominoTiles::DominoTileHorizontalBack
459 }
460
461 pub fn name(&self) -> String {
463 let s = std::format!("DominoTiles{:#?}", self);
464 string_morph::to_sentence_case(&s)
465 }
466}