1
2#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
4pub enum CombiningDiacriticalMarksforSymbols {
5 CombiningLeftHarpoonAbove,
7 CombiningRightHarpoonAbove,
9 CombiningLongVerticalLineOverlay,
11 CombiningShortVerticalLineOverlay,
13 CombiningAnticlockwiseArrowAbove,
15 CombiningClockwiseArrowAbove,
17 CombiningLeftArrowAbove,
19 CombiningRightArrowAbove,
21 CombiningRingOverlay,
23 CombiningClockwiseRingOverlay,
25 CombiningAnticlockwiseRingOverlay,
27 CombiningThreeDotsAbove,
29 CombiningFourDotsAbove,
31 CombiningEnclosingCircle,
33 CombiningEnclosingSquare,
35 CombiningEnclosingDiamond,
37 CombiningEnclosingCircleBackslash,
39 CombiningLeftRightArrowAbove,
41 CombiningEnclosingScreen,
43 CombiningEnclosingKeycap,
45 CombiningEnclosingUpwardPointingTriangle,
47 CombiningReverseSolidusOverlay,
49 CombiningDoubleVerticalStrokeOverlay,
51 CombiningAnnuitySymbol,
53 CombiningTripleUnderdot,
55 CombiningWideBridgeAbove,
57 CombiningLeftwardsArrowOverlay,
59 CombiningLongDoubleSolidusOverlay,
61 CombiningRightwardsHarpoonWithBarbDownwards,
63 CombiningLeftwardsHarpoonWithBarbDownwards,
65 CombiningLeftArrowBelow,
67 CombiningRightArrowBelow,
69 CombiningAsteriskAbove,
71}
72
73impl Into<char> for CombiningDiacriticalMarksforSymbols {
74 fn into(self) -> char {
75 match self {
76 CombiningDiacriticalMarksforSymbols::CombiningLeftHarpoonAbove => '⃐',
77 CombiningDiacriticalMarksforSymbols::CombiningRightHarpoonAbove => '⃑',
78 CombiningDiacriticalMarksforSymbols::CombiningLongVerticalLineOverlay => '⃒',
79 CombiningDiacriticalMarksforSymbols::CombiningShortVerticalLineOverlay => '⃓',
80 CombiningDiacriticalMarksforSymbols::CombiningAnticlockwiseArrowAbove => '⃔',
81 CombiningDiacriticalMarksforSymbols::CombiningClockwiseArrowAbove => '⃕',
82 CombiningDiacriticalMarksforSymbols::CombiningLeftArrowAbove => '⃖',
83 CombiningDiacriticalMarksforSymbols::CombiningRightArrowAbove => '⃗',
84 CombiningDiacriticalMarksforSymbols::CombiningRingOverlay => '⃘',
85 CombiningDiacriticalMarksforSymbols::CombiningClockwiseRingOverlay => '⃙',
86 CombiningDiacriticalMarksforSymbols::CombiningAnticlockwiseRingOverlay => '⃚',
87 CombiningDiacriticalMarksforSymbols::CombiningThreeDotsAbove => '⃛',
88 CombiningDiacriticalMarksforSymbols::CombiningFourDotsAbove => '⃜',
89 CombiningDiacriticalMarksforSymbols::CombiningEnclosingCircle => '⃝',
90 CombiningDiacriticalMarksforSymbols::CombiningEnclosingSquare => '⃞',
91 CombiningDiacriticalMarksforSymbols::CombiningEnclosingDiamond => '⃟',
92 CombiningDiacriticalMarksforSymbols::CombiningEnclosingCircleBackslash => '⃠',
93 CombiningDiacriticalMarksforSymbols::CombiningLeftRightArrowAbove => '⃡',
94 CombiningDiacriticalMarksforSymbols::CombiningEnclosingScreen => '⃢',
95 CombiningDiacriticalMarksforSymbols::CombiningEnclosingKeycap => '⃣',
96 CombiningDiacriticalMarksforSymbols::CombiningEnclosingUpwardPointingTriangle => '⃤',
97 CombiningDiacriticalMarksforSymbols::CombiningReverseSolidusOverlay => '⃥',
98 CombiningDiacriticalMarksforSymbols::CombiningDoubleVerticalStrokeOverlay => '⃦',
99 CombiningDiacriticalMarksforSymbols::CombiningAnnuitySymbol => '⃧',
100 CombiningDiacriticalMarksforSymbols::CombiningTripleUnderdot => '⃨',
101 CombiningDiacriticalMarksforSymbols::CombiningWideBridgeAbove => '⃩',
102 CombiningDiacriticalMarksforSymbols::CombiningLeftwardsArrowOverlay => '⃪',
103 CombiningDiacriticalMarksforSymbols::CombiningLongDoubleSolidusOverlay => '⃫',
104 CombiningDiacriticalMarksforSymbols::CombiningRightwardsHarpoonWithBarbDownwards => '⃬',
105 CombiningDiacriticalMarksforSymbols::CombiningLeftwardsHarpoonWithBarbDownwards => '⃭',
106 CombiningDiacriticalMarksforSymbols::CombiningLeftArrowBelow => '⃮',
107 CombiningDiacriticalMarksforSymbols::CombiningRightArrowBelow => '⃯',
108 CombiningDiacriticalMarksforSymbols::CombiningAsteriskAbove => '⃰',
109 }
110 }
111}
112
113impl std::convert::TryFrom<char> for CombiningDiacriticalMarksforSymbols {
114 type Error = ();
115 fn try_from(c: char) -> Result<Self, Self::Error> {
116 match c {
117 '⃐' => Ok(CombiningDiacriticalMarksforSymbols::CombiningLeftHarpoonAbove),
118 '⃑' => Ok(CombiningDiacriticalMarksforSymbols::CombiningRightHarpoonAbove),
119 '⃒' => Ok(CombiningDiacriticalMarksforSymbols::CombiningLongVerticalLineOverlay),
120 '⃓' => Ok(CombiningDiacriticalMarksforSymbols::CombiningShortVerticalLineOverlay),
121 '⃔' => Ok(CombiningDiacriticalMarksforSymbols::CombiningAnticlockwiseArrowAbove),
122 '⃕' => Ok(CombiningDiacriticalMarksforSymbols::CombiningClockwiseArrowAbove),
123 '⃖' => Ok(CombiningDiacriticalMarksforSymbols::CombiningLeftArrowAbove),
124 '⃗' => Ok(CombiningDiacriticalMarksforSymbols::CombiningRightArrowAbove),
125 '⃘' => Ok(CombiningDiacriticalMarksforSymbols::CombiningRingOverlay),
126 '⃙' => Ok(CombiningDiacriticalMarksforSymbols::CombiningClockwiseRingOverlay),
127 '⃚' => Ok(CombiningDiacriticalMarksforSymbols::CombiningAnticlockwiseRingOverlay),
128 '⃛' => Ok(CombiningDiacriticalMarksforSymbols::CombiningThreeDotsAbove),
129 '⃜' => Ok(CombiningDiacriticalMarksforSymbols::CombiningFourDotsAbove),
130 '⃝' => Ok(CombiningDiacriticalMarksforSymbols::CombiningEnclosingCircle),
131 '⃞' => Ok(CombiningDiacriticalMarksforSymbols::CombiningEnclosingSquare),
132 '⃟' => Ok(CombiningDiacriticalMarksforSymbols::CombiningEnclosingDiamond),
133 '⃠' => Ok(CombiningDiacriticalMarksforSymbols::CombiningEnclosingCircleBackslash),
134 '⃡' => Ok(CombiningDiacriticalMarksforSymbols::CombiningLeftRightArrowAbove),
135 '⃢' => Ok(CombiningDiacriticalMarksforSymbols::CombiningEnclosingScreen),
136 '⃣' => Ok(CombiningDiacriticalMarksforSymbols::CombiningEnclosingKeycap),
137 '⃤' => Ok(CombiningDiacriticalMarksforSymbols::CombiningEnclosingUpwardPointingTriangle),
138 '⃥' => Ok(CombiningDiacriticalMarksforSymbols::CombiningReverseSolidusOverlay),
139 '⃦' => Ok(CombiningDiacriticalMarksforSymbols::CombiningDoubleVerticalStrokeOverlay),
140 '⃧' => Ok(CombiningDiacriticalMarksforSymbols::CombiningAnnuitySymbol),
141 '⃨' => Ok(CombiningDiacriticalMarksforSymbols::CombiningTripleUnderdot),
142 '⃩' => Ok(CombiningDiacriticalMarksforSymbols::CombiningWideBridgeAbove),
143 '⃪' => Ok(CombiningDiacriticalMarksforSymbols::CombiningLeftwardsArrowOverlay),
144 '⃫' => Ok(CombiningDiacriticalMarksforSymbols::CombiningLongDoubleSolidusOverlay),
145 '⃬' => Ok(CombiningDiacriticalMarksforSymbols::CombiningRightwardsHarpoonWithBarbDownwards),
146 '⃭' => Ok(CombiningDiacriticalMarksforSymbols::CombiningLeftwardsHarpoonWithBarbDownwards),
147 '⃮' => Ok(CombiningDiacriticalMarksforSymbols::CombiningLeftArrowBelow),
148 '⃯' => Ok(CombiningDiacriticalMarksforSymbols::CombiningRightArrowBelow),
149 '⃰' => Ok(CombiningDiacriticalMarksforSymbols::CombiningAsteriskAbove),
150 _ => Err(()),
151 }
152 }
153}
154
155impl Into<u32> for CombiningDiacriticalMarksforSymbols {
156 fn into(self) -> u32 {
157 let c: char = self.into();
158 let hex = c
159 .escape_unicode()
160 .to_string()
161 .replace("\\u{", "")
162 .replace("}", "");
163 u32::from_str_radix(&hex, 16).unwrap()
164 }
165}
166
167impl std::convert::TryFrom<u32> for CombiningDiacriticalMarksforSymbols {
168 type Error = ();
169 fn try_from(u: u32) -> Result<Self, Self::Error> {
170 if let Ok(c) = char::try_from(u) {
171 Self::try_from(c)
172 } else {
173 Err(())
174 }
175 }
176}
177
178impl Iterator for CombiningDiacriticalMarksforSymbols {
179 type Item = Self;
180 fn next(&mut self) -> Option<Self> {
181 let index: u32 = (*self).into();
182 use std::convert::TryFrom;
183 Self::try_from(index + 1).ok()
184 }
185}
186
187impl CombiningDiacriticalMarksforSymbols {
188 pub fn new() -> Self {
190 CombiningDiacriticalMarksforSymbols::CombiningLeftHarpoonAbove
191 }
192
193 pub fn name(&self) -> String {
195 let s = std::format!("CombiningDiacriticalMarksforSymbols{:#?}", self);
196 string_morph::to_sentence_case(&s)
197 }
198}