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
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446

/// An enum to represent all characters in the CyrillicExtendedB block.
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum CyrillicExtendedB {
    /// \u{a640}: 'Ꙁ'
    CyrillicCapitalLetterZemlya,
    /// \u{a641}: 'ꙁ'
    CyrillicSmallLetterZemlya,
    /// \u{a642}: 'Ꙃ'
    CyrillicCapitalLetterDzelo,
    /// \u{a643}: 'ꙃ'
    CyrillicSmallLetterDzelo,
    /// \u{a644}: 'Ꙅ'
    CyrillicCapitalLetterReversedDze,
    /// \u{a645}: 'ꙅ'
    CyrillicSmallLetterReversedDze,
    /// \u{a646}: 'Ꙇ'
    CyrillicCapitalLetterIota,
    /// \u{a647}: 'ꙇ'
    CyrillicSmallLetterIota,
    /// \u{a648}: 'Ꙉ'
    CyrillicCapitalLetterDjerv,
    /// \u{a649}: 'ꙉ'
    CyrillicSmallLetterDjerv,
    /// \u{a64a}: 'Ꙋ'
    CyrillicCapitalLetterMonographUk,
    /// \u{a64b}: 'ꙋ'
    CyrillicSmallLetterMonographUk,
    /// \u{a64c}: 'Ꙍ'
    CyrillicCapitalLetterBroadOmega,
    /// \u{a64d}: 'ꙍ'
    CyrillicSmallLetterBroadOmega,
    /// \u{a64e}: 'Ꙏ'
    CyrillicCapitalLetterNeutralYer,
    /// \u{a64f}: 'ꙏ'
    CyrillicSmallLetterNeutralYer,
    /// \u{a650}: 'Ꙑ'
    CyrillicCapitalLetterYeruWithBackYer,
    /// \u{a651}: 'ꙑ'
    CyrillicSmallLetterYeruWithBackYer,
    /// \u{a652}: 'Ꙓ'
    CyrillicCapitalLetterIotifiedYat,
    /// \u{a653}: 'ꙓ'
    CyrillicSmallLetterIotifiedYat,
    /// \u{a654}: 'Ꙕ'
    CyrillicCapitalLetterReversedYu,
    /// \u{a655}: 'ꙕ'
    CyrillicSmallLetterReversedYu,
    /// \u{a656}: 'Ꙗ'
    CyrillicCapitalLetterIotifiedA,
    /// \u{a657}: 'ꙗ'
    CyrillicSmallLetterIotifiedA,
    /// \u{a658}: 'Ꙙ'
    CyrillicCapitalLetterClosedLittleYus,
    /// \u{a659}: 'ꙙ'
    CyrillicSmallLetterClosedLittleYus,
    /// \u{a65a}: 'Ꙛ'
    CyrillicCapitalLetterBlendedYus,
    /// \u{a65b}: 'ꙛ'
    CyrillicSmallLetterBlendedYus,
    /// \u{a65c}: 'Ꙝ'
    CyrillicCapitalLetterIotifiedClosedLittleYus,
    /// \u{a65d}: 'ꙝ'
    CyrillicSmallLetterIotifiedClosedLittleYus,
    /// \u{a65e}: 'Ꙟ'
    CyrillicCapitalLetterYn,
    /// \u{a65f}: 'ꙟ'
    CyrillicSmallLetterYn,
    /// \u{a660}: 'Ꙡ'
    CyrillicCapitalLetterReversedTse,
    /// \u{a661}: 'ꙡ'
    CyrillicSmallLetterReversedTse,
    /// \u{a662}: 'Ꙣ'
    CyrillicCapitalLetterSoftDe,
    /// \u{a663}: 'ꙣ'
    CyrillicSmallLetterSoftDe,
    /// \u{a664}: 'Ꙥ'
    CyrillicCapitalLetterSoftEl,
    /// \u{a665}: 'ꙥ'
    CyrillicSmallLetterSoftEl,
    /// \u{a666}: 'Ꙧ'
    CyrillicCapitalLetterSoftEm,
    /// \u{a667}: 'ꙧ'
    CyrillicSmallLetterSoftEm,
    /// \u{a668}: 'Ꙩ'
    CyrillicCapitalLetterMonocularO,
    /// \u{a669}: 'ꙩ'
    CyrillicSmallLetterMonocularO,
    /// \u{a66a}: 'Ꙫ'
    CyrillicCapitalLetterBinocularO,
    /// \u{a66b}: 'ꙫ'
    CyrillicSmallLetterBinocularO,
    /// \u{a66c}: 'Ꙭ'
    CyrillicCapitalLetterDoubleMonocularO,
    /// \u{a66d}: 'ꙭ'
    CyrillicSmallLetterDoubleMonocularO,
    /// \u{a66e}: 'ꙮ'
    CyrillicLetterMultiocularO,
    /// \u{a66f}: '꙯'
    CombiningCyrillicVzmet,
    /// \u{a670}: '꙰'
    CombiningCyrillicTenMillionsSign,
    /// \u{a671}: '꙱'
    CombiningCyrillicHundredMillionsSign,
    /// \u{a672}: '꙲'
    CombiningCyrillicThousandMillionsSign,
    /// \u{a673}: '꙳'
    SlavonicAsterisk,
    /// \u{a674}: 'ꙴ'
    CombiningCyrillicLetterUkrainianIe,
    /// \u{a675}: 'ꙵ'
    CombiningCyrillicLetterI,
    /// \u{a676}: 'ꙶ'
    CombiningCyrillicLetterYi,
    /// \u{a677}: 'ꙷ'
    CombiningCyrillicLetterU,
    /// \u{a678}: 'ꙸ'
    CombiningCyrillicLetterHardSign,
    /// \u{a679}: 'ꙹ'
    CombiningCyrillicLetterYeru,
    /// \u{a67a}: 'ꙺ'
    CombiningCyrillicLetterSoftSign,
    /// \u{a67b}: 'ꙻ'
    CombiningCyrillicLetterOmega,
    /// \u{a67c}: '꙼'
    CombiningCyrillicKavyka,
    /// \u{a67d}: '꙽'
    CombiningCyrillicPayerok,
    /// \u{a67e}: '꙾'
    CyrillicKavyka,
    /// \u{a67f}: 'ꙿ'
    CyrillicPayerok,
    /// \u{a680}: 'Ꚁ'
    CyrillicCapitalLetterDwe,
    /// \u{a681}: 'ꚁ'
    CyrillicSmallLetterDwe,
    /// \u{a682}: 'Ꚃ'
    CyrillicCapitalLetterDzwe,
    /// \u{a683}: 'ꚃ'
    CyrillicSmallLetterDzwe,
    /// \u{a684}: 'Ꚅ'
    CyrillicCapitalLetterZhwe,
    /// \u{a685}: 'ꚅ'
    CyrillicSmallLetterZhwe,
    /// \u{a686}: 'Ꚇ'
    CyrillicCapitalLetterCche,
    /// \u{a687}: 'ꚇ'
    CyrillicSmallLetterCche,
    /// \u{a688}: 'Ꚉ'
    CyrillicCapitalLetterDzze,
    /// \u{a689}: 'ꚉ'
    CyrillicSmallLetterDzze,
    /// \u{a68a}: 'Ꚋ'
    CyrillicCapitalLetterTeWithMiddleHook,
    /// \u{a68b}: 'ꚋ'
    CyrillicSmallLetterTeWithMiddleHook,
    /// \u{a68c}: 'Ꚍ'
    CyrillicCapitalLetterTwe,
    /// \u{a68d}: 'ꚍ'
    CyrillicSmallLetterTwe,
    /// \u{a68e}: 'Ꚏ'
    CyrillicCapitalLetterTswe,
    /// \u{a68f}: 'ꚏ'
    CyrillicSmallLetterTswe,
    /// \u{a690}: 'Ꚑ'
    CyrillicCapitalLetterTsse,
    /// \u{a691}: 'ꚑ'
    CyrillicSmallLetterTsse,
    /// \u{a692}: 'Ꚓ'
    CyrillicCapitalLetterTche,
    /// \u{a693}: 'ꚓ'
    CyrillicSmallLetterTche,
    /// \u{a694}: 'Ꚕ'
    CyrillicCapitalLetterHwe,
    /// \u{a695}: 'ꚕ'
    CyrillicSmallLetterHwe,
    /// \u{a696}: 'Ꚗ'
    CyrillicCapitalLetterShwe,
    /// \u{a697}: 'ꚗ'
    CyrillicSmallLetterShwe,
    /// \u{a698}: 'Ꚙ'
    CyrillicCapitalLetterDoubleO,
    /// \u{a699}: 'ꚙ'
    CyrillicSmallLetterDoubleO,
    /// \u{a69a}: 'Ꚛ'
    CyrillicCapitalLetterCrossedO,
    /// \u{a69b}: 'ꚛ'
    CyrillicSmallLetterCrossedO,
    /// \u{a69c}: 'ꚜ'
    ModifierLetterCyrillicHardSign,
    /// \u{a69d}: 'ꚝ'
    ModifierLetterCyrillicSoftSign,
    /// \u{a69e}: 'ꚞ'
    CombiningCyrillicLetterEf,
}

impl Into<char> for CyrillicExtendedB {
    fn into(self) -> char {
        match self {
            CyrillicExtendedB::CyrillicCapitalLetterZemlya => 'Ꙁ',
            CyrillicExtendedB::CyrillicSmallLetterZemlya => 'ꙁ',
            CyrillicExtendedB::CyrillicCapitalLetterDzelo => 'Ꙃ',
            CyrillicExtendedB::CyrillicSmallLetterDzelo => 'ꙃ',
            CyrillicExtendedB::CyrillicCapitalLetterReversedDze => 'Ꙅ',
            CyrillicExtendedB::CyrillicSmallLetterReversedDze => 'ꙅ',
            CyrillicExtendedB::CyrillicCapitalLetterIota => 'Ꙇ',
            CyrillicExtendedB::CyrillicSmallLetterIota => 'ꙇ',
            CyrillicExtendedB::CyrillicCapitalLetterDjerv => 'Ꙉ',
            CyrillicExtendedB::CyrillicSmallLetterDjerv => 'ꙉ',
            CyrillicExtendedB::CyrillicCapitalLetterMonographUk => 'Ꙋ',
            CyrillicExtendedB::CyrillicSmallLetterMonographUk => 'ꙋ',
            CyrillicExtendedB::CyrillicCapitalLetterBroadOmega => 'Ꙍ',
            CyrillicExtendedB::CyrillicSmallLetterBroadOmega => 'ꙍ',
            CyrillicExtendedB::CyrillicCapitalLetterNeutralYer => 'Ꙏ',
            CyrillicExtendedB::CyrillicSmallLetterNeutralYer => 'ꙏ',
            CyrillicExtendedB::CyrillicCapitalLetterYeruWithBackYer => 'Ꙑ',
            CyrillicExtendedB::CyrillicSmallLetterYeruWithBackYer => 'ꙑ',
            CyrillicExtendedB::CyrillicCapitalLetterIotifiedYat => 'Ꙓ',
            CyrillicExtendedB::CyrillicSmallLetterIotifiedYat => 'ꙓ',
            CyrillicExtendedB::CyrillicCapitalLetterReversedYu => 'Ꙕ',
            CyrillicExtendedB::CyrillicSmallLetterReversedYu => 'ꙕ',
            CyrillicExtendedB::CyrillicCapitalLetterIotifiedA => 'Ꙗ',
            CyrillicExtendedB::CyrillicSmallLetterIotifiedA => 'ꙗ',
            CyrillicExtendedB::CyrillicCapitalLetterClosedLittleYus => 'Ꙙ',
            CyrillicExtendedB::CyrillicSmallLetterClosedLittleYus => 'ꙙ',
            CyrillicExtendedB::CyrillicCapitalLetterBlendedYus => 'Ꙛ',
            CyrillicExtendedB::CyrillicSmallLetterBlendedYus => 'ꙛ',
            CyrillicExtendedB::CyrillicCapitalLetterIotifiedClosedLittleYus => 'Ꙝ',
            CyrillicExtendedB::CyrillicSmallLetterIotifiedClosedLittleYus => 'ꙝ',
            CyrillicExtendedB::CyrillicCapitalLetterYn => 'Ꙟ',
            CyrillicExtendedB::CyrillicSmallLetterYn => 'ꙟ',
            CyrillicExtendedB::CyrillicCapitalLetterReversedTse => 'Ꙡ',
            CyrillicExtendedB::CyrillicSmallLetterReversedTse => 'ꙡ',
            CyrillicExtendedB::CyrillicCapitalLetterSoftDe => 'Ꙣ',
            CyrillicExtendedB::CyrillicSmallLetterSoftDe => 'ꙣ',
            CyrillicExtendedB::CyrillicCapitalLetterSoftEl => 'Ꙥ',
            CyrillicExtendedB::CyrillicSmallLetterSoftEl => 'ꙥ',
            CyrillicExtendedB::CyrillicCapitalLetterSoftEm => 'Ꙧ',
            CyrillicExtendedB::CyrillicSmallLetterSoftEm => 'ꙧ',
            CyrillicExtendedB::CyrillicCapitalLetterMonocularO => 'Ꙩ',
            CyrillicExtendedB::CyrillicSmallLetterMonocularO => 'ꙩ',
            CyrillicExtendedB::CyrillicCapitalLetterBinocularO => 'Ꙫ',
            CyrillicExtendedB::CyrillicSmallLetterBinocularO => 'ꙫ',
            CyrillicExtendedB::CyrillicCapitalLetterDoubleMonocularO => 'Ꙭ',
            CyrillicExtendedB::CyrillicSmallLetterDoubleMonocularO => 'ꙭ',
            CyrillicExtendedB::CyrillicLetterMultiocularO => 'ꙮ',
            CyrillicExtendedB::CombiningCyrillicVzmet => '꙯',
            CyrillicExtendedB::CombiningCyrillicTenMillionsSign => '꙰',
            CyrillicExtendedB::CombiningCyrillicHundredMillionsSign => '꙱',
            CyrillicExtendedB::CombiningCyrillicThousandMillionsSign => '꙲',
            CyrillicExtendedB::SlavonicAsterisk => '꙳',
            CyrillicExtendedB::CombiningCyrillicLetterUkrainianIe => 'ꙴ',
            CyrillicExtendedB::CombiningCyrillicLetterI => 'ꙵ',
            CyrillicExtendedB::CombiningCyrillicLetterYi => 'ꙶ',
            CyrillicExtendedB::CombiningCyrillicLetterU => 'ꙷ',
            CyrillicExtendedB::CombiningCyrillicLetterHardSign => 'ꙸ',
            CyrillicExtendedB::CombiningCyrillicLetterYeru => 'ꙹ',
            CyrillicExtendedB::CombiningCyrillicLetterSoftSign => 'ꙺ',
            CyrillicExtendedB::CombiningCyrillicLetterOmega => 'ꙻ',
            CyrillicExtendedB::CombiningCyrillicKavyka => '꙼',
            CyrillicExtendedB::CombiningCyrillicPayerok => '꙽',
            CyrillicExtendedB::CyrillicKavyka => '꙾',
            CyrillicExtendedB::CyrillicPayerok => 'ꙿ',
            CyrillicExtendedB::CyrillicCapitalLetterDwe => 'Ꚁ',
            CyrillicExtendedB::CyrillicSmallLetterDwe => 'ꚁ',
            CyrillicExtendedB::CyrillicCapitalLetterDzwe => 'Ꚃ',
            CyrillicExtendedB::CyrillicSmallLetterDzwe => 'ꚃ',
            CyrillicExtendedB::CyrillicCapitalLetterZhwe => 'Ꚅ',
            CyrillicExtendedB::CyrillicSmallLetterZhwe => 'ꚅ',
            CyrillicExtendedB::CyrillicCapitalLetterCche => 'Ꚇ',
            CyrillicExtendedB::CyrillicSmallLetterCche => 'ꚇ',
            CyrillicExtendedB::CyrillicCapitalLetterDzze => 'Ꚉ',
            CyrillicExtendedB::CyrillicSmallLetterDzze => 'ꚉ',
            CyrillicExtendedB::CyrillicCapitalLetterTeWithMiddleHook => 'Ꚋ',
            CyrillicExtendedB::CyrillicSmallLetterTeWithMiddleHook => 'ꚋ',
            CyrillicExtendedB::CyrillicCapitalLetterTwe => 'Ꚍ',
            CyrillicExtendedB::CyrillicSmallLetterTwe => 'ꚍ',
            CyrillicExtendedB::CyrillicCapitalLetterTswe => 'Ꚏ',
            CyrillicExtendedB::CyrillicSmallLetterTswe => 'ꚏ',
            CyrillicExtendedB::CyrillicCapitalLetterTsse => 'Ꚑ',
            CyrillicExtendedB::CyrillicSmallLetterTsse => 'ꚑ',
            CyrillicExtendedB::CyrillicCapitalLetterTche => 'Ꚓ',
            CyrillicExtendedB::CyrillicSmallLetterTche => 'ꚓ',
            CyrillicExtendedB::CyrillicCapitalLetterHwe => 'Ꚕ',
            CyrillicExtendedB::CyrillicSmallLetterHwe => 'ꚕ',
            CyrillicExtendedB::CyrillicCapitalLetterShwe => 'Ꚗ',
            CyrillicExtendedB::CyrillicSmallLetterShwe => 'ꚗ',
            CyrillicExtendedB::CyrillicCapitalLetterDoubleO => 'Ꚙ',
            CyrillicExtendedB::CyrillicSmallLetterDoubleO => 'ꚙ',
            CyrillicExtendedB::CyrillicCapitalLetterCrossedO => 'Ꚛ',
            CyrillicExtendedB::CyrillicSmallLetterCrossedO => 'ꚛ',
            CyrillicExtendedB::ModifierLetterCyrillicHardSign => 'ꚜ',
            CyrillicExtendedB::ModifierLetterCyrillicSoftSign => 'ꚝ',
            CyrillicExtendedB::CombiningCyrillicLetterEf => 'ꚞ',
        }
    }
}

impl std::convert::TryFrom<char> for CyrillicExtendedB {
    type Error = ();
    fn try_from(c: char) -> Result<Self, Self::Error> {
        match c {
            'Ꙁ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterZemlya),
            'ꙁ' => Ok(CyrillicExtendedB::CyrillicSmallLetterZemlya),
            'Ꙃ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterDzelo),
            'ꙃ' => Ok(CyrillicExtendedB::CyrillicSmallLetterDzelo),
            'Ꙅ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterReversedDze),
            'ꙅ' => Ok(CyrillicExtendedB::CyrillicSmallLetterReversedDze),
            'Ꙇ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterIota),
            'ꙇ' => Ok(CyrillicExtendedB::CyrillicSmallLetterIota),
            'Ꙉ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterDjerv),
            'ꙉ' => Ok(CyrillicExtendedB::CyrillicSmallLetterDjerv),
            'Ꙋ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterMonographUk),
            'ꙋ' => Ok(CyrillicExtendedB::CyrillicSmallLetterMonographUk),
            'Ꙍ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterBroadOmega),
            'ꙍ' => Ok(CyrillicExtendedB::CyrillicSmallLetterBroadOmega),
            'Ꙏ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterNeutralYer),
            'ꙏ' => Ok(CyrillicExtendedB::CyrillicSmallLetterNeutralYer),
            'Ꙑ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterYeruWithBackYer),
            'ꙑ' => Ok(CyrillicExtendedB::CyrillicSmallLetterYeruWithBackYer),
            'Ꙓ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterIotifiedYat),
            'ꙓ' => Ok(CyrillicExtendedB::CyrillicSmallLetterIotifiedYat),
            'Ꙕ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterReversedYu),
            'ꙕ' => Ok(CyrillicExtendedB::CyrillicSmallLetterReversedYu),
            'Ꙗ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterIotifiedA),
            'ꙗ' => Ok(CyrillicExtendedB::CyrillicSmallLetterIotifiedA),
            'Ꙙ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterClosedLittleYus),
            'ꙙ' => Ok(CyrillicExtendedB::CyrillicSmallLetterClosedLittleYus),
            'Ꙛ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterBlendedYus),
            'ꙛ' => Ok(CyrillicExtendedB::CyrillicSmallLetterBlendedYus),
            'Ꙝ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterIotifiedClosedLittleYus),
            'ꙝ' => Ok(CyrillicExtendedB::CyrillicSmallLetterIotifiedClosedLittleYus),
            'Ꙟ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterYn),
            'ꙟ' => Ok(CyrillicExtendedB::CyrillicSmallLetterYn),
            'Ꙡ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterReversedTse),
            'ꙡ' => Ok(CyrillicExtendedB::CyrillicSmallLetterReversedTse),
            'Ꙣ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterSoftDe),
            'ꙣ' => Ok(CyrillicExtendedB::CyrillicSmallLetterSoftDe),
            'Ꙥ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterSoftEl),
            'ꙥ' => Ok(CyrillicExtendedB::CyrillicSmallLetterSoftEl),
            'Ꙧ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterSoftEm),
            'ꙧ' => Ok(CyrillicExtendedB::CyrillicSmallLetterSoftEm),
            'Ꙩ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterMonocularO),
            'ꙩ' => Ok(CyrillicExtendedB::CyrillicSmallLetterMonocularO),
            'Ꙫ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterBinocularO),
            'ꙫ' => Ok(CyrillicExtendedB::CyrillicSmallLetterBinocularO),
            'Ꙭ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterDoubleMonocularO),
            'ꙭ' => Ok(CyrillicExtendedB::CyrillicSmallLetterDoubleMonocularO),
            'ꙮ' => Ok(CyrillicExtendedB::CyrillicLetterMultiocularO),
            '꙯' => Ok(CyrillicExtendedB::CombiningCyrillicVzmet),
            '꙰' => Ok(CyrillicExtendedB::CombiningCyrillicTenMillionsSign),
            '꙱' => Ok(CyrillicExtendedB::CombiningCyrillicHundredMillionsSign),
            '꙲' => Ok(CyrillicExtendedB::CombiningCyrillicThousandMillionsSign),
            '꙳' => Ok(CyrillicExtendedB::SlavonicAsterisk),
            'ꙴ' => Ok(CyrillicExtendedB::CombiningCyrillicLetterUkrainianIe),
            'ꙵ' => Ok(CyrillicExtendedB::CombiningCyrillicLetterI),
            'ꙶ' => Ok(CyrillicExtendedB::CombiningCyrillicLetterYi),
            'ꙷ' => Ok(CyrillicExtendedB::CombiningCyrillicLetterU),
            'ꙸ' => Ok(CyrillicExtendedB::CombiningCyrillicLetterHardSign),
            'ꙹ' => Ok(CyrillicExtendedB::CombiningCyrillicLetterYeru),
            'ꙺ' => Ok(CyrillicExtendedB::CombiningCyrillicLetterSoftSign),
            'ꙻ' => Ok(CyrillicExtendedB::CombiningCyrillicLetterOmega),
            '꙼' => Ok(CyrillicExtendedB::CombiningCyrillicKavyka),
            '꙽' => Ok(CyrillicExtendedB::CombiningCyrillicPayerok),
            '꙾' => Ok(CyrillicExtendedB::CyrillicKavyka),
            'ꙿ' => Ok(CyrillicExtendedB::CyrillicPayerok),
            'Ꚁ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterDwe),
            'ꚁ' => Ok(CyrillicExtendedB::CyrillicSmallLetterDwe),
            'Ꚃ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterDzwe),
            'ꚃ' => Ok(CyrillicExtendedB::CyrillicSmallLetterDzwe),
            'Ꚅ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterZhwe),
            'ꚅ' => Ok(CyrillicExtendedB::CyrillicSmallLetterZhwe),
            'Ꚇ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterCche),
            'ꚇ' => Ok(CyrillicExtendedB::CyrillicSmallLetterCche),
            'Ꚉ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterDzze),
            'ꚉ' => Ok(CyrillicExtendedB::CyrillicSmallLetterDzze),
            'Ꚋ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterTeWithMiddleHook),
            'ꚋ' => Ok(CyrillicExtendedB::CyrillicSmallLetterTeWithMiddleHook),
            'Ꚍ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterTwe),
            'ꚍ' => Ok(CyrillicExtendedB::CyrillicSmallLetterTwe),
            'Ꚏ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterTswe),
            'ꚏ' => Ok(CyrillicExtendedB::CyrillicSmallLetterTswe),
            'Ꚑ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterTsse),
            'ꚑ' => Ok(CyrillicExtendedB::CyrillicSmallLetterTsse),
            'Ꚓ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterTche),
            'ꚓ' => Ok(CyrillicExtendedB::CyrillicSmallLetterTche),
            'Ꚕ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterHwe),
            'ꚕ' => Ok(CyrillicExtendedB::CyrillicSmallLetterHwe),
            'Ꚗ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterShwe),
            'ꚗ' => Ok(CyrillicExtendedB::CyrillicSmallLetterShwe),
            'Ꚙ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterDoubleO),
            'ꚙ' => Ok(CyrillicExtendedB::CyrillicSmallLetterDoubleO),
            'Ꚛ' => Ok(CyrillicExtendedB::CyrillicCapitalLetterCrossedO),
            'ꚛ' => Ok(CyrillicExtendedB::CyrillicSmallLetterCrossedO),
            'ꚜ' => Ok(CyrillicExtendedB::ModifierLetterCyrillicHardSign),
            'ꚝ' => Ok(CyrillicExtendedB::ModifierLetterCyrillicSoftSign),
            'ꚞ' => Ok(CyrillicExtendedB::CombiningCyrillicLetterEf),
            _ => Err(()),
        }
    }
}

impl Into<u32> for CyrillicExtendedB {
    fn into(self) -> u32 {
        let c: char = self.into();
        let hex = c
            .escape_unicode()
            .to_string()
            .replace("\\u{", "")
            .replace("}", "");
        u32::from_str_radix(&hex, 16).unwrap()
    }
}

impl std::convert::TryFrom<u32> for CyrillicExtendedB {
    type Error = ();
    fn try_from(u: u32) -> Result<Self, Self::Error> {
        if let Ok(c) = char::try_from(u) {
            Self::try_from(c)
        } else {
            Err(())
        }
    }
}

impl Iterator for CyrillicExtendedB {
    type Item = Self;
    fn next(&mut self) -> Option<Self> {
        let index: u32 = (*self).into();
        use std::convert::TryFrom;
        Self::try_from(index + 1).ok()
    }
}

impl CyrillicExtendedB {
    /// The character with the lowest index in this unicode block
    pub fn new() -> Self {
        CyrillicExtendedB::CyrillicCapitalLetterZemlya
    }

    /// The character's name, in sentence case
    pub fn name(&self) -> String {
        let s = std::format!("CyrillicExtendedB{:#?}", self);
        string_morph::to_sentence_case(&s)
    }
}