unicode_types/generated/
arrows.rs

1
2/// An enum to represent all characters in the Arrows block.
3#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum Arrows {
5    /// \u{2190}: '←'
6    LeftwardsArrow,
7    /// \u{2191}: '↑'
8    UpwardsArrow,
9    /// \u{2192}: '→'
10    RightwardsArrow,
11    /// \u{2193}: '↓'
12    DownwardsArrow,
13    /// \u{2194}: '↔'
14    LeftRightArrow,
15    /// \u{2195}: '↕'
16    UpDownArrow,
17    /// \u{2196}: '↖'
18    NorthWestArrow,
19    /// \u{2197}: '↗'
20    NorthEastArrow,
21    /// \u{2198}: '↘'
22    SouthEastArrow,
23    /// \u{2199}: '↙'
24    SouthWestArrow,
25    /// \u{219a}: '↚'
26    LeftwardsArrowWithStroke,
27    /// \u{219b}: '↛'
28    RightwardsArrowWithStroke,
29    /// \u{219c}: '↜'
30    LeftwardsWaveArrow,
31    /// \u{219d}: '↝'
32    RightwardsWaveArrow,
33    /// \u{219e}: '↞'
34    LeftwardsTwoHeadedArrow,
35    /// \u{219f}: '↟'
36    UpwardsTwoHeadedArrow,
37    /// \u{21a0}: '↠'
38    RightwardsTwoHeadedArrow,
39    /// \u{21a1}: '↡'
40    DownwardsTwoHeadedArrow,
41    /// \u{21a2}: '↢'
42    LeftwardsArrowWithTail,
43    /// \u{21a3}: '↣'
44    RightwardsArrowWithTail,
45    /// \u{21a4}: '↤'
46    LeftwardsArrowFromBar,
47    /// \u{21a5}: '↥'
48    UpwardsArrowFromBar,
49    /// \u{21a6}: '↦'
50    RightwardsArrowFromBar,
51    /// \u{21a7}: '↧'
52    DownwardsArrowFromBar,
53    /// \u{21a8}: '↨'
54    UpDownArrowWithBase,
55    /// \u{21a9}: '↩'
56    LeftwardsArrowWithHook,
57    /// \u{21aa}: '↪'
58    RightwardsArrowWithHook,
59    /// \u{21ab}: '↫'
60    LeftwardsArrowWithLoop,
61    /// \u{21ac}: '↬'
62    RightwardsArrowWithLoop,
63    /// \u{21ad}: '↭'
64    LeftRightWaveArrow,
65    /// \u{21ae}: '↮'
66    LeftRightArrowWithStroke,
67    /// \u{21af}: '↯'
68    DownwardsZigzagArrow,
69    /// \u{21b0}: '↰'
70    UpwardsArrowWithTipLeftwards,
71    /// \u{21b1}: '↱'
72    UpwardsArrowWithTipRightwards,
73    /// \u{21b2}: '↲'
74    DownwardsArrowWithTipLeftwards,
75    /// \u{21b3}: '↳'
76    DownwardsArrowWithTipRightwards,
77    /// \u{21b4}: '↴'
78    RightwardsArrowWithCornerDownwards,
79    /// \u{21b5}: '↵'
80    DownwardsArrowWithCornerLeftwards,
81    /// \u{21b6}: '↶'
82    AnticlockwiseTopSemicircleArrow,
83    /// \u{21b7}: '↷'
84    ClockwiseTopSemicircleArrow,
85    /// \u{21b8}: '↸'
86    NorthWestArrowToLongBar,
87    /// \u{21b9}: '↹'
88    LeftwardsArrowToBarOverRightwardsArrowToBar,
89    /// \u{21ba}: '↺'
90    AnticlockwiseOpenCircleArrow,
91    /// \u{21bb}: '↻'
92    ClockwiseOpenCircleArrow,
93    /// \u{21bc}: '↼'
94    LeftwardsHarpoonWithBarbUpwards,
95    /// \u{21bd}: '↽'
96    LeftwardsHarpoonWithBarbDownwards,
97    /// \u{21be}: '↾'
98    UpwardsHarpoonWithBarbRightwards,
99    /// \u{21bf}: '↿'
100    UpwardsHarpoonWithBarbLeftwards,
101    /// \u{21c0}: '⇀'
102    RightwardsHarpoonWithBarbUpwards,
103    /// \u{21c1}: '⇁'
104    RightwardsHarpoonWithBarbDownwards,
105    /// \u{21c2}: '⇂'
106    DownwardsHarpoonWithBarbRightwards,
107    /// \u{21c3}: '⇃'
108    DownwardsHarpoonWithBarbLeftwards,
109    /// \u{21c4}: '⇄'
110    RightwardsArrowOverLeftwardsArrow,
111    /// \u{21c5}: '⇅'
112    UpwardsArrowLeftwardsOfDownwardsArrow,
113    /// \u{21c6}: '⇆'
114    LeftwardsArrowOverRightwardsArrow,
115    /// \u{21c7}: '⇇'
116    LeftwardsPaired,
117    /// \u{21c8}: '⇈'
118    UpwardsPaired,
119    /// \u{21c9}: '⇉'
120    RightwardsPaired,
121    /// \u{21ca}: '⇊'
122    DownwardsPaired,
123    /// \u{21cb}: '⇋'
124    LeftwardsHarpoonOverRightwardsHarpoon,
125    /// \u{21cc}: '⇌'
126    RightwardsHarpoonOverLeftwardsHarpoon,
127    /// \u{21cd}: '⇍'
128    LeftwardsDoubleArrowWithStroke,
129    /// \u{21ce}: '⇎'
130    LeftRightDoubleArrowWithStroke,
131    /// \u{21cf}: '⇏'
132    RightwardsDoubleArrowWithStroke,
133    /// \u{21d0}: '⇐'
134    LeftwardsDoubleArrow,
135    /// \u{21d1}: '⇑'
136    UpwardsDoubleArrow,
137    /// \u{21d2}: '⇒'
138    RightwardsDoubleArrow,
139    /// \u{21d3}: '⇓'
140    DownwardsDoubleArrow,
141    /// \u{21d4}: '⇔'
142    LeftRightDoubleArrow,
143    /// \u{21d5}: '⇕'
144    UpDownDoubleArrow,
145    /// \u{21d6}: '⇖'
146    NorthWestDoubleArrow,
147    /// \u{21d7}: '⇗'
148    NorthEastDoubleArrow,
149    /// \u{21d8}: '⇘'
150    SouthEastDoubleArrow,
151    /// \u{21d9}: '⇙'
152    SouthWestDoubleArrow,
153    /// \u{21da}: '⇚'
154    LeftwardsTripleArrow,
155    /// \u{21db}: '⇛'
156    RightwardsTripleArrow,
157    /// \u{21dc}: '⇜'
158    LeftwardsSquiggleArrow,
159    /// \u{21dd}: '⇝'
160    RightwardsSquiggleArrow,
161    /// \u{21de}: '⇞'
162    UpwardsArrowWithDoubleStroke,
163    /// \u{21df}: '⇟'
164    DownwardsArrowWithDoubleStroke,
165    /// \u{21e0}: '⇠'
166    LeftwardsDashedArrow,
167    /// \u{21e1}: '⇡'
168    UpwardsDashedArrow,
169    /// \u{21e2}: '⇢'
170    RightwardsDashedArrow,
171    /// \u{21e3}: '⇣'
172    DownwardsDashedArrow,
173    /// \u{21e4}: '⇤'
174    LeftwardsArrowToBar,
175    /// \u{21e5}: '⇥'
176    RightwardsArrowToBar,
177    /// \u{21e6}: '⇦'
178    LeftwardsWhiteArrow,
179    /// \u{21e7}: '⇧'
180    UpwardsWhiteArrow,
181    /// \u{21e8}: '⇨'
182    RightwardsWhiteArrow,
183    /// \u{21e9}: '⇩'
184    DownwardsWhiteArrow,
185    /// \u{21ea}: '⇪'
186    UpwardsWhiteArrowFromBar,
187    /// \u{21eb}: '⇫'
188    UpwardsWhiteArrowOnPedestal,
189    /// \u{21ec}: '⇬'
190    UpwardsWhiteArrowOnPedestalWithHorizontalBar,
191    /// \u{21ed}: '⇭'
192    UpwardsWhiteArrowOnPedestalWithVerticalBar,
193    /// \u{21ee}: '⇮'
194    UpwardsWhiteDoubleArrow,
195    /// \u{21ef}: '⇯'
196    UpwardsWhiteDoubleArrowOnPedestal,
197    /// \u{21f0}: '⇰'
198    RightwardsWhiteArrowFromWall,
199    /// \u{21f1}: '⇱'
200    NorthWestArrowToCorner,
201    /// \u{21f2}: '⇲'
202    SouthEastArrowToCorner,
203    /// \u{21f3}: '⇳'
204    UpDownWhiteArrow,
205    /// \u{21f4}: '⇴'
206    RightArrowWithSmallCircle,
207    /// \u{21f5}: '⇵'
208    DownwardsArrowLeftwardsOfUpwardsArrow,
209    /// \u{21f6}: '⇶'
210    ThreeRightwards,
211    /// \u{21f7}: '⇷'
212    LeftwardsArrowWithVerticalStroke,
213    /// \u{21f8}: '⇸'
214    RightwardsArrowWithVerticalStroke,
215    /// \u{21f9}: '⇹'
216    LeftRightArrowWithVerticalStroke,
217    /// \u{21fa}: '⇺'
218    LeftwardsArrowWithDoubleVerticalStroke,
219    /// \u{21fb}: '⇻'
220    RightwardsArrowWithDoubleVerticalStroke,
221    /// \u{21fc}: '⇼'
222    LeftRightArrowWithDoubleVerticalStroke,
223    /// \u{21fd}: '⇽'
224    LeftwardsOpenDashHeadedArrow,
225    /// \u{21fe}: '⇾'
226    RightwardsOpenDashHeadedArrow,
227}
228
229impl Into<char> for Arrows {
230    fn into(self) -> char {
231        match self {
232            Arrows::LeftwardsArrow => '←',
233            Arrows::UpwardsArrow => '↑',
234            Arrows::RightwardsArrow => '→',
235            Arrows::DownwardsArrow => '↓',
236            Arrows::LeftRightArrow => '↔',
237            Arrows::UpDownArrow => '↕',
238            Arrows::NorthWestArrow => '↖',
239            Arrows::NorthEastArrow => '↗',
240            Arrows::SouthEastArrow => '↘',
241            Arrows::SouthWestArrow => '↙',
242            Arrows::LeftwardsArrowWithStroke => '↚',
243            Arrows::RightwardsArrowWithStroke => '↛',
244            Arrows::LeftwardsWaveArrow => '↜',
245            Arrows::RightwardsWaveArrow => '↝',
246            Arrows::LeftwardsTwoHeadedArrow => '↞',
247            Arrows::UpwardsTwoHeadedArrow => '↟',
248            Arrows::RightwardsTwoHeadedArrow => '↠',
249            Arrows::DownwardsTwoHeadedArrow => '↡',
250            Arrows::LeftwardsArrowWithTail => '↢',
251            Arrows::RightwardsArrowWithTail => '↣',
252            Arrows::LeftwardsArrowFromBar => '↤',
253            Arrows::UpwardsArrowFromBar => '↥',
254            Arrows::RightwardsArrowFromBar => '↦',
255            Arrows::DownwardsArrowFromBar => '↧',
256            Arrows::UpDownArrowWithBase => '↨',
257            Arrows::LeftwardsArrowWithHook => '↩',
258            Arrows::RightwardsArrowWithHook => '↪',
259            Arrows::LeftwardsArrowWithLoop => '↫',
260            Arrows::RightwardsArrowWithLoop => '↬',
261            Arrows::LeftRightWaveArrow => '↭',
262            Arrows::LeftRightArrowWithStroke => '↮',
263            Arrows::DownwardsZigzagArrow => '↯',
264            Arrows::UpwardsArrowWithTipLeftwards => '↰',
265            Arrows::UpwardsArrowWithTipRightwards => '↱',
266            Arrows::DownwardsArrowWithTipLeftwards => '↲',
267            Arrows::DownwardsArrowWithTipRightwards => '↳',
268            Arrows::RightwardsArrowWithCornerDownwards => '↴',
269            Arrows::DownwardsArrowWithCornerLeftwards => '↵',
270            Arrows::AnticlockwiseTopSemicircleArrow => '↶',
271            Arrows::ClockwiseTopSemicircleArrow => '↷',
272            Arrows::NorthWestArrowToLongBar => '↸',
273            Arrows::LeftwardsArrowToBarOverRightwardsArrowToBar => '↹',
274            Arrows::AnticlockwiseOpenCircleArrow => '↺',
275            Arrows::ClockwiseOpenCircleArrow => '↻',
276            Arrows::LeftwardsHarpoonWithBarbUpwards => '↼',
277            Arrows::LeftwardsHarpoonWithBarbDownwards => '↽',
278            Arrows::UpwardsHarpoonWithBarbRightwards => '↾',
279            Arrows::UpwardsHarpoonWithBarbLeftwards => '↿',
280            Arrows::RightwardsHarpoonWithBarbUpwards => '⇀',
281            Arrows::RightwardsHarpoonWithBarbDownwards => '⇁',
282            Arrows::DownwardsHarpoonWithBarbRightwards => '⇂',
283            Arrows::DownwardsHarpoonWithBarbLeftwards => '⇃',
284            Arrows::RightwardsArrowOverLeftwardsArrow => '⇄',
285            Arrows::UpwardsArrowLeftwardsOfDownwardsArrow => '⇅',
286            Arrows::LeftwardsArrowOverRightwardsArrow => '⇆',
287            Arrows::LeftwardsPaired => '⇇',
288            Arrows::UpwardsPaired => '⇈',
289            Arrows::RightwardsPaired => '⇉',
290            Arrows::DownwardsPaired => '⇊',
291            Arrows::LeftwardsHarpoonOverRightwardsHarpoon => '⇋',
292            Arrows::RightwardsHarpoonOverLeftwardsHarpoon => '⇌',
293            Arrows::LeftwardsDoubleArrowWithStroke => '⇍',
294            Arrows::LeftRightDoubleArrowWithStroke => '⇎',
295            Arrows::RightwardsDoubleArrowWithStroke => '⇏',
296            Arrows::LeftwardsDoubleArrow => '⇐',
297            Arrows::UpwardsDoubleArrow => '⇑',
298            Arrows::RightwardsDoubleArrow => '⇒',
299            Arrows::DownwardsDoubleArrow => '⇓',
300            Arrows::LeftRightDoubleArrow => '⇔',
301            Arrows::UpDownDoubleArrow => '⇕',
302            Arrows::NorthWestDoubleArrow => '⇖',
303            Arrows::NorthEastDoubleArrow => '⇗',
304            Arrows::SouthEastDoubleArrow => '⇘',
305            Arrows::SouthWestDoubleArrow => '⇙',
306            Arrows::LeftwardsTripleArrow => '⇚',
307            Arrows::RightwardsTripleArrow => '⇛',
308            Arrows::LeftwardsSquiggleArrow => '⇜',
309            Arrows::RightwardsSquiggleArrow => '⇝',
310            Arrows::UpwardsArrowWithDoubleStroke => '⇞',
311            Arrows::DownwardsArrowWithDoubleStroke => '⇟',
312            Arrows::LeftwardsDashedArrow => '⇠',
313            Arrows::UpwardsDashedArrow => '⇡',
314            Arrows::RightwardsDashedArrow => '⇢',
315            Arrows::DownwardsDashedArrow => '⇣',
316            Arrows::LeftwardsArrowToBar => '⇤',
317            Arrows::RightwardsArrowToBar => '⇥',
318            Arrows::LeftwardsWhiteArrow => '⇦',
319            Arrows::UpwardsWhiteArrow => '⇧',
320            Arrows::RightwardsWhiteArrow => '⇨',
321            Arrows::DownwardsWhiteArrow => '⇩',
322            Arrows::UpwardsWhiteArrowFromBar => '⇪',
323            Arrows::UpwardsWhiteArrowOnPedestal => '⇫',
324            Arrows::UpwardsWhiteArrowOnPedestalWithHorizontalBar => '⇬',
325            Arrows::UpwardsWhiteArrowOnPedestalWithVerticalBar => '⇭',
326            Arrows::UpwardsWhiteDoubleArrow => '⇮',
327            Arrows::UpwardsWhiteDoubleArrowOnPedestal => '⇯',
328            Arrows::RightwardsWhiteArrowFromWall => '⇰',
329            Arrows::NorthWestArrowToCorner => '⇱',
330            Arrows::SouthEastArrowToCorner => '⇲',
331            Arrows::UpDownWhiteArrow => '⇳',
332            Arrows::RightArrowWithSmallCircle => '⇴',
333            Arrows::DownwardsArrowLeftwardsOfUpwardsArrow => '⇵',
334            Arrows::ThreeRightwards => '⇶',
335            Arrows::LeftwardsArrowWithVerticalStroke => '⇷',
336            Arrows::RightwardsArrowWithVerticalStroke => '⇸',
337            Arrows::LeftRightArrowWithVerticalStroke => '⇹',
338            Arrows::LeftwardsArrowWithDoubleVerticalStroke => '⇺',
339            Arrows::RightwardsArrowWithDoubleVerticalStroke => '⇻',
340            Arrows::LeftRightArrowWithDoubleVerticalStroke => '⇼',
341            Arrows::LeftwardsOpenDashHeadedArrow => '⇽',
342            Arrows::RightwardsOpenDashHeadedArrow => '⇾',
343        }
344    }
345}
346
347impl std::convert::TryFrom<char> for Arrows {
348    type Error = ();
349    fn try_from(c: char) -> Result<Self, Self::Error> {
350        match c {
351            '←' => Ok(Arrows::LeftwardsArrow),
352            '↑' => Ok(Arrows::UpwardsArrow),
353            '→' => Ok(Arrows::RightwardsArrow),
354            '↓' => Ok(Arrows::DownwardsArrow),
355            '↔' => Ok(Arrows::LeftRightArrow),
356            '↕' => Ok(Arrows::UpDownArrow),
357            '↖' => Ok(Arrows::NorthWestArrow),
358            '↗' => Ok(Arrows::NorthEastArrow),
359            '↘' => Ok(Arrows::SouthEastArrow),
360            '↙' => Ok(Arrows::SouthWestArrow),
361            '↚' => Ok(Arrows::LeftwardsArrowWithStroke),
362            '↛' => Ok(Arrows::RightwardsArrowWithStroke),
363            '↜' => Ok(Arrows::LeftwardsWaveArrow),
364            '↝' => Ok(Arrows::RightwardsWaveArrow),
365            '↞' => Ok(Arrows::LeftwardsTwoHeadedArrow),
366            '↟' => Ok(Arrows::UpwardsTwoHeadedArrow),
367            '↠' => Ok(Arrows::RightwardsTwoHeadedArrow),
368            '↡' => Ok(Arrows::DownwardsTwoHeadedArrow),
369            '↢' => Ok(Arrows::LeftwardsArrowWithTail),
370            '↣' => Ok(Arrows::RightwardsArrowWithTail),
371            '↤' => Ok(Arrows::LeftwardsArrowFromBar),
372            '↥' => Ok(Arrows::UpwardsArrowFromBar),
373            '↦' => Ok(Arrows::RightwardsArrowFromBar),
374            '↧' => Ok(Arrows::DownwardsArrowFromBar),
375            '↨' => Ok(Arrows::UpDownArrowWithBase),
376            '↩' => Ok(Arrows::LeftwardsArrowWithHook),
377            '↪' => Ok(Arrows::RightwardsArrowWithHook),
378            '↫' => Ok(Arrows::LeftwardsArrowWithLoop),
379            '↬' => Ok(Arrows::RightwardsArrowWithLoop),
380            '↭' => Ok(Arrows::LeftRightWaveArrow),
381            '↮' => Ok(Arrows::LeftRightArrowWithStroke),
382            '↯' => Ok(Arrows::DownwardsZigzagArrow),
383            '↰' => Ok(Arrows::UpwardsArrowWithTipLeftwards),
384            '↱' => Ok(Arrows::UpwardsArrowWithTipRightwards),
385            '↲' => Ok(Arrows::DownwardsArrowWithTipLeftwards),
386            '↳' => Ok(Arrows::DownwardsArrowWithTipRightwards),
387            '↴' => Ok(Arrows::RightwardsArrowWithCornerDownwards),
388            '↵' => Ok(Arrows::DownwardsArrowWithCornerLeftwards),
389            '↶' => Ok(Arrows::AnticlockwiseTopSemicircleArrow),
390            '↷' => Ok(Arrows::ClockwiseTopSemicircleArrow),
391            '↸' => Ok(Arrows::NorthWestArrowToLongBar),
392            '↹' => Ok(Arrows::LeftwardsArrowToBarOverRightwardsArrowToBar),
393            '↺' => Ok(Arrows::AnticlockwiseOpenCircleArrow),
394            '↻' => Ok(Arrows::ClockwiseOpenCircleArrow),
395            '↼' => Ok(Arrows::LeftwardsHarpoonWithBarbUpwards),
396            '↽' => Ok(Arrows::LeftwardsHarpoonWithBarbDownwards),
397            '↾' => Ok(Arrows::UpwardsHarpoonWithBarbRightwards),
398            '↿' => Ok(Arrows::UpwardsHarpoonWithBarbLeftwards),
399            '⇀' => Ok(Arrows::RightwardsHarpoonWithBarbUpwards),
400            '⇁' => Ok(Arrows::RightwardsHarpoonWithBarbDownwards),
401            '⇂' => Ok(Arrows::DownwardsHarpoonWithBarbRightwards),
402            '⇃' => Ok(Arrows::DownwardsHarpoonWithBarbLeftwards),
403            '⇄' => Ok(Arrows::RightwardsArrowOverLeftwardsArrow),
404            '⇅' => Ok(Arrows::UpwardsArrowLeftwardsOfDownwardsArrow),
405            '⇆' => Ok(Arrows::LeftwardsArrowOverRightwardsArrow),
406            '⇇' => Ok(Arrows::LeftwardsPaired),
407            '⇈' => Ok(Arrows::UpwardsPaired),
408            '⇉' => Ok(Arrows::RightwardsPaired),
409            '⇊' => Ok(Arrows::DownwardsPaired),
410            '⇋' => Ok(Arrows::LeftwardsHarpoonOverRightwardsHarpoon),
411            '⇌' => Ok(Arrows::RightwardsHarpoonOverLeftwardsHarpoon),
412            '⇍' => Ok(Arrows::LeftwardsDoubleArrowWithStroke),
413            '⇎' => Ok(Arrows::LeftRightDoubleArrowWithStroke),
414            '⇏' => Ok(Arrows::RightwardsDoubleArrowWithStroke),
415            '⇐' => Ok(Arrows::LeftwardsDoubleArrow),
416            '⇑' => Ok(Arrows::UpwardsDoubleArrow),
417            '⇒' => Ok(Arrows::RightwardsDoubleArrow),
418            '⇓' => Ok(Arrows::DownwardsDoubleArrow),
419            '⇔' => Ok(Arrows::LeftRightDoubleArrow),
420            '⇕' => Ok(Arrows::UpDownDoubleArrow),
421            '⇖' => Ok(Arrows::NorthWestDoubleArrow),
422            '⇗' => Ok(Arrows::NorthEastDoubleArrow),
423            '⇘' => Ok(Arrows::SouthEastDoubleArrow),
424            '⇙' => Ok(Arrows::SouthWestDoubleArrow),
425            '⇚' => Ok(Arrows::LeftwardsTripleArrow),
426            '⇛' => Ok(Arrows::RightwardsTripleArrow),
427            '⇜' => Ok(Arrows::LeftwardsSquiggleArrow),
428            '⇝' => Ok(Arrows::RightwardsSquiggleArrow),
429            '⇞' => Ok(Arrows::UpwardsArrowWithDoubleStroke),
430            '⇟' => Ok(Arrows::DownwardsArrowWithDoubleStroke),
431            '⇠' => Ok(Arrows::LeftwardsDashedArrow),
432            '⇡' => Ok(Arrows::UpwardsDashedArrow),
433            '⇢' => Ok(Arrows::RightwardsDashedArrow),
434            '⇣' => Ok(Arrows::DownwardsDashedArrow),
435            '⇤' => Ok(Arrows::LeftwardsArrowToBar),
436            '⇥' => Ok(Arrows::RightwardsArrowToBar),
437            '⇦' => Ok(Arrows::LeftwardsWhiteArrow),
438            '⇧' => Ok(Arrows::UpwardsWhiteArrow),
439            '⇨' => Ok(Arrows::RightwardsWhiteArrow),
440            '⇩' => Ok(Arrows::DownwardsWhiteArrow),
441            '⇪' => Ok(Arrows::UpwardsWhiteArrowFromBar),
442            '⇫' => Ok(Arrows::UpwardsWhiteArrowOnPedestal),
443            '⇬' => Ok(Arrows::UpwardsWhiteArrowOnPedestalWithHorizontalBar),
444            '⇭' => Ok(Arrows::UpwardsWhiteArrowOnPedestalWithVerticalBar),
445            '⇮' => Ok(Arrows::UpwardsWhiteDoubleArrow),
446            '⇯' => Ok(Arrows::UpwardsWhiteDoubleArrowOnPedestal),
447            '⇰' => Ok(Arrows::RightwardsWhiteArrowFromWall),
448            '⇱' => Ok(Arrows::NorthWestArrowToCorner),
449            '⇲' => Ok(Arrows::SouthEastArrowToCorner),
450            '⇳' => Ok(Arrows::UpDownWhiteArrow),
451            '⇴' => Ok(Arrows::RightArrowWithSmallCircle),
452            '⇵' => Ok(Arrows::DownwardsArrowLeftwardsOfUpwardsArrow),
453            '⇶' => Ok(Arrows::ThreeRightwards),
454            '⇷' => Ok(Arrows::LeftwardsArrowWithVerticalStroke),
455            '⇸' => Ok(Arrows::RightwardsArrowWithVerticalStroke),
456            '⇹' => Ok(Arrows::LeftRightArrowWithVerticalStroke),
457            '⇺' => Ok(Arrows::LeftwardsArrowWithDoubleVerticalStroke),
458            '⇻' => Ok(Arrows::RightwardsArrowWithDoubleVerticalStroke),
459            '⇼' => Ok(Arrows::LeftRightArrowWithDoubleVerticalStroke),
460            '⇽' => Ok(Arrows::LeftwardsOpenDashHeadedArrow),
461            '⇾' => Ok(Arrows::RightwardsOpenDashHeadedArrow),
462            _ => Err(()),
463        }
464    }
465}
466
467impl Into<u32> for Arrows {
468    fn into(self) -> u32 {
469        let c: char = self.into();
470        let hex = c
471            .escape_unicode()
472            .to_string()
473            .replace("\\u{", "")
474            .replace("}", "");
475        u32::from_str_radix(&hex, 16).unwrap()
476    }
477}
478
479impl std::convert::TryFrom<u32> for Arrows {
480    type Error = ();
481    fn try_from(u: u32) -> Result<Self, Self::Error> {
482        if let Ok(c) = char::try_from(u) {
483            Self::try_from(c)
484        } else {
485            Err(())
486        }
487    }
488}
489
490impl Iterator for Arrows {
491    type Item = Self;
492    fn next(&mut self) -> Option<Self> {
493        let index: u32 = (*self).into();
494        use std::convert::TryFrom;
495        Self::try_from(index + 1).ok()
496    }
497}
498
499impl Arrows {
500    /// The character with the lowest index in this unicode block
501    pub fn new() -> Self {
502        Arrows::LeftwardsArrow
503    }
504
505    /// The character's name, in sentence case
506    pub fn name(&self) -> String {
507        let s = std::format!("Arrows{:#?}", self);
508        string_morph::to_sentence_case(&s)
509    }
510}