mod constants {
pub const COMBINING_CYRILLIC_LETTER_BE: char = 'ⷠ';
pub const COMBINING_CYRILLIC_LETTER_VE: char = 'ⷡ';
pub const COMBINING_CYRILLIC_LETTER_GHE: char = 'ⷢ';
pub const COMBINING_CYRILLIC_LETTER_DE: char = 'ⷣ';
pub const COMBINING_CYRILLIC_LETTER_ZHE: char = 'ⷤ';
pub const COMBINING_CYRILLIC_LETTER_ZE: char = 'ⷥ';
pub const COMBINING_CYRILLIC_LETTER_KA: char = 'ⷦ';
pub const COMBINING_CYRILLIC_LETTER_EL: char = 'ⷧ';
pub const COMBINING_CYRILLIC_LETTER_EM: char = 'ⷨ';
pub const COMBINING_CYRILLIC_LETTER_EN: char = 'ⷩ';
pub const COMBINING_CYRILLIC_LETTER_O: char = 'ⷪ';
pub const COMBINING_CYRILLIC_LETTER_PE: char = 'ⷫ';
pub const COMBINING_CYRILLIC_LETTER_ER: char = 'ⷬ';
pub const COMBINING_CYRILLIC_LETTER_ES: char = 'ⷭ';
pub const COMBINING_CYRILLIC_LETTER_TE: char = 'ⷮ';
pub const COMBINING_CYRILLIC_LETTER_HA: char = 'ⷯ';
pub const COMBINING_CYRILLIC_LETTER_TSE: char = 'ⷰ';
pub const COMBINING_CYRILLIC_LETTER_CHE: char = 'ⷱ';
pub const COMBINING_CYRILLIC_LETTER_SHA: char = 'ⷲ';
pub const COMBINING_CYRILLIC_LETTER_SHCHA: char = 'ⷳ';
pub const COMBINING_CYRILLIC_LETTER_FITA: char = 'ⷴ';
pub const COMBINING_CYRILLIC_LETTER_ES_DASH_TE: char = 'ⷵ';
pub const COMBINING_CYRILLIC_LETTER_A: char = 'ⷶ';
pub const COMBINING_CYRILLIC_LETTER_IE: char = 'ⷷ';
pub const COMBINING_CYRILLIC_LETTER_DJERV: char = 'ⷸ';
pub const COMBINING_CYRILLIC_LETTER_MONOGRAPH_UK: char = 'ⷹ';
pub const COMBINING_CYRILLIC_LETTER_YAT: char = 'ⷺ';
pub const COMBINING_CYRILLIC_LETTER_YU: char = 'ⷻ';
pub const COMBINING_CYRILLIC_LETTER_IOTIFIED_A: char = 'ⷼ';
pub const COMBINING_CYRILLIC_LETTER_LITTLE_YUS: char = 'ⷽ';
pub const COMBINING_CYRILLIC_LETTER_BIG_YUS: char = 'ⷾ';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum CyrillicExtendedA {
CombiningCyrillicLetterBe,
CombiningCyrillicLetterVe,
CombiningCyrillicLetterGhe,
CombiningCyrillicLetterDe,
CombiningCyrillicLetterZhe,
CombiningCyrillicLetterZe,
CombiningCyrillicLetterKa,
CombiningCyrillicLetterEl,
CombiningCyrillicLetterEm,
CombiningCyrillicLetterEn,
CombiningCyrillicLetterO,
CombiningCyrillicLetterPe,
CombiningCyrillicLetterEr,
CombiningCyrillicLetterEs,
CombiningCyrillicLetterTe,
CombiningCyrillicLetterHa,
CombiningCyrillicLetterTse,
CombiningCyrillicLetterChe,
CombiningCyrillicLetterSha,
CombiningCyrillicLetterShcha,
CombiningCyrillicLetterFita,
CombiningCyrillicLetterEsDashTe,
CombiningCyrillicLetterA,
CombiningCyrillicLetterIe,
CombiningCyrillicLetterDjerv,
CombiningCyrillicLetterMonographUk,
CombiningCyrillicLetterYat,
CombiningCyrillicLetterYu,
CombiningCyrillicLetterIotifiedA,
CombiningCyrillicLetterLittleYus,
CombiningCyrillicLetterBigYus,
}
impl Into<char> for CyrillicExtendedA {
fn into(self) -> char {
use constants::*;
match self {
CyrillicExtendedA::CombiningCyrillicLetterBe => COMBINING_CYRILLIC_LETTER_BE,
CyrillicExtendedA::CombiningCyrillicLetterVe => COMBINING_CYRILLIC_LETTER_VE,
CyrillicExtendedA::CombiningCyrillicLetterGhe => COMBINING_CYRILLIC_LETTER_GHE,
CyrillicExtendedA::CombiningCyrillicLetterDe => COMBINING_CYRILLIC_LETTER_DE,
CyrillicExtendedA::CombiningCyrillicLetterZhe => COMBINING_CYRILLIC_LETTER_ZHE,
CyrillicExtendedA::CombiningCyrillicLetterZe => COMBINING_CYRILLIC_LETTER_ZE,
CyrillicExtendedA::CombiningCyrillicLetterKa => COMBINING_CYRILLIC_LETTER_KA,
CyrillicExtendedA::CombiningCyrillicLetterEl => COMBINING_CYRILLIC_LETTER_EL,
CyrillicExtendedA::CombiningCyrillicLetterEm => COMBINING_CYRILLIC_LETTER_EM,
CyrillicExtendedA::CombiningCyrillicLetterEn => COMBINING_CYRILLIC_LETTER_EN,
CyrillicExtendedA::CombiningCyrillicLetterO => COMBINING_CYRILLIC_LETTER_O,
CyrillicExtendedA::CombiningCyrillicLetterPe => COMBINING_CYRILLIC_LETTER_PE,
CyrillicExtendedA::CombiningCyrillicLetterEr => COMBINING_CYRILLIC_LETTER_ER,
CyrillicExtendedA::CombiningCyrillicLetterEs => COMBINING_CYRILLIC_LETTER_ES,
CyrillicExtendedA::CombiningCyrillicLetterTe => COMBINING_CYRILLIC_LETTER_TE,
CyrillicExtendedA::CombiningCyrillicLetterHa => COMBINING_CYRILLIC_LETTER_HA,
CyrillicExtendedA::CombiningCyrillicLetterTse => COMBINING_CYRILLIC_LETTER_TSE,
CyrillicExtendedA::CombiningCyrillicLetterChe => COMBINING_CYRILLIC_LETTER_CHE,
CyrillicExtendedA::CombiningCyrillicLetterSha => COMBINING_CYRILLIC_LETTER_SHA,
CyrillicExtendedA::CombiningCyrillicLetterShcha => COMBINING_CYRILLIC_LETTER_SHCHA,
CyrillicExtendedA::CombiningCyrillicLetterFita => COMBINING_CYRILLIC_LETTER_FITA,
CyrillicExtendedA::CombiningCyrillicLetterEsDashTe => COMBINING_CYRILLIC_LETTER_ES_DASH_TE,
CyrillicExtendedA::CombiningCyrillicLetterA => COMBINING_CYRILLIC_LETTER_A,
CyrillicExtendedA::CombiningCyrillicLetterIe => COMBINING_CYRILLIC_LETTER_IE,
CyrillicExtendedA::CombiningCyrillicLetterDjerv => COMBINING_CYRILLIC_LETTER_DJERV,
CyrillicExtendedA::CombiningCyrillicLetterMonographUk => COMBINING_CYRILLIC_LETTER_MONOGRAPH_UK,
CyrillicExtendedA::CombiningCyrillicLetterYat => COMBINING_CYRILLIC_LETTER_YAT,
CyrillicExtendedA::CombiningCyrillicLetterYu => COMBINING_CYRILLIC_LETTER_YU,
CyrillicExtendedA::CombiningCyrillicLetterIotifiedA => COMBINING_CYRILLIC_LETTER_IOTIFIED_A,
CyrillicExtendedA::CombiningCyrillicLetterLittleYus => COMBINING_CYRILLIC_LETTER_LITTLE_YUS,
CyrillicExtendedA::CombiningCyrillicLetterBigYus => COMBINING_CYRILLIC_LETTER_BIG_YUS,
}
}
}
impl std::convert::TryFrom<char> for CyrillicExtendedA {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
COMBINING_CYRILLIC_LETTER_BE => Ok(CyrillicExtendedA::CombiningCyrillicLetterBe),
COMBINING_CYRILLIC_LETTER_VE => Ok(CyrillicExtendedA::CombiningCyrillicLetterVe),
COMBINING_CYRILLIC_LETTER_GHE => Ok(CyrillicExtendedA::CombiningCyrillicLetterGhe),
COMBINING_CYRILLIC_LETTER_DE => Ok(CyrillicExtendedA::CombiningCyrillicLetterDe),
COMBINING_CYRILLIC_LETTER_ZHE => Ok(CyrillicExtendedA::CombiningCyrillicLetterZhe),
COMBINING_CYRILLIC_LETTER_ZE => Ok(CyrillicExtendedA::CombiningCyrillicLetterZe),
COMBINING_CYRILLIC_LETTER_KA => Ok(CyrillicExtendedA::CombiningCyrillicLetterKa),
COMBINING_CYRILLIC_LETTER_EL => Ok(CyrillicExtendedA::CombiningCyrillicLetterEl),
COMBINING_CYRILLIC_LETTER_EM => Ok(CyrillicExtendedA::CombiningCyrillicLetterEm),
COMBINING_CYRILLIC_LETTER_EN => Ok(CyrillicExtendedA::CombiningCyrillicLetterEn),
COMBINING_CYRILLIC_LETTER_O => Ok(CyrillicExtendedA::CombiningCyrillicLetterO),
COMBINING_CYRILLIC_LETTER_PE => Ok(CyrillicExtendedA::CombiningCyrillicLetterPe),
COMBINING_CYRILLIC_LETTER_ER => Ok(CyrillicExtendedA::CombiningCyrillicLetterEr),
COMBINING_CYRILLIC_LETTER_ES => Ok(CyrillicExtendedA::CombiningCyrillicLetterEs),
COMBINING_CYRILLIC_LETTER_TE => Ok(CyrillicExtendedA::CombiningCyrillicLetterTe),
COMBINING_CYRILLIC_LETTER_HA => Ok(CyrillicExtendedA::CombiningCyrillicLetterHa),
COMBINING_CYRILLIC_LETTER_TSE => Ok(CyrillicExtendedA::CombiningCyrillicLetterTse),
COMBINING_CYRILLIC_LETTER_CHE => Ok(CyrillicExtendedA::CombiningCyrillicLetterChe),
COMBINING_CYRILLIC_LETTER_SHA => Ok(CyrillicExtendedA::CombiningCyrillicLetterSha),
COMBINING_CYRILLIC_LETTER_SHCHA => Ok(CyrillicExtendedA::CombiningCyrillicLetterShcha),
COMBINING_CYRILLIC_LETTER_FITA => Ok(CyrillicExtendedA::CombiningCyrillicLetterFita),
COMBINING_CYRILLIC_LETTER_ES_DASH_TE => Ok(CyrillicExtendedA::CombiningCyrillicLetterEsDashTe),
COMBINING_CYRILLIC_LETTER_A => Ok(CyrillicExtendedA::CombiningCyrillicLetterA),
COMBINING_CYRILLIC_LETTER_IE => Ok(CyrillicExtendedA::CombiningCyrillicLetterIe),
COMBINING_CYRILLIC_LETTER_DJERV => Ok(CyrillicExtendedA::CombiningCyrillicLetterDjerv),
COMBINING_CYRILLIC_LETTER_MONOGRAPH_UK => Ok(CyrillicExtendedA::CombiningCyrillicLetterMonographUk),
COMBINING_CYRILLIC_LETTER_YAT => Ok(CyrillicExtendedA::CombiningCyrillicLetterYat),
COMBINING_CYRILLIC_LETTER_YU => Ok(CyrillicExtendedA::CombiningCyrillicLetterYu),
COMBINING_CYRILLIC_LETTER_IOTIFIED_A => Ok(CyrillicExtendedA::CombiningCyrillicLetterIotifiedA),
COMBINING_CYRILLIC_LETTER_LITTLE_YUS => Ok(CyrillicExtendedA::CombiningCyrillicLetterLittleYus),
COMBINING_CYRILLIC_LETTER_BIG_YUS => Ok(CyrillicExtendedA::CombiningCyrillicLetterBigYus),
_ => Err(()),
}
}
}
impl Into<u32> for CyrillicExtendedA {
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 CyrillicExtendedA {
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 CyrillicExtendedA {
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 CyrillicExtendedA {
pub fn new() -> Self {
CyrillicExtendedA::CombiningCyrillicLetterBe
}
pub fn name(&self) -> &str {
match self {
CyrillicExtendedA::CombiningCyrillicLetterBe => "combining cyrillic letter be",
CyrillicExtendedA::CombiningCyrillicLetterVe => "combining cyrillic letter ve",
CyrillicExtendedA::CombiningCyrillicLetterGhe => "combining cyrillic letter ghe",
CyrillicExtendedA::CombiningCyrillicLetterDe => "combining cyrillic letter de",
CyrillicExtendedA::CombiningCyrillicLetterZhe => "combining cyrillic letter zhe",
CyrillicExtendedA::CombiningCyrillicLetterZe => "combining cyrillic letter ze",
CyrillicExtendedA::CombiningCyrillicLetterKa => "combining cyrillic letter ka",
CyrillicExtendedA::CombiningCyrillicLetterEl => "combining cyrillic letter el",
CyrillicExtendedA::CombiningCyrillicLetterEm => "combining cyrillic letter em",
CyrillicExtendedA::CombiningCyrillicLetterEn => "combining cyrillic letter en",
CyrillicExtendedA::CombiningCyrillicLetterO => "combining cyrillic letter o",
CyrillicExtendedA::CombiningCyrillicLetterPe => "combining cyrillic letter pe",
CyrillicExtendedA::CombiningCyrillicLetterEr => "combining cyrillic letter er",
CyrillicExtendedA::CombiningCyrillicLetterEs => "combining cyrillic letter es",
CyrillicExtendedA::CombiningCyrillicLetterTe => "combining cyrillic letter te",
CyrillicExtendedA::CombiningCyrillicLetterHa => "combining cyrillic letter ha",
CyrillicExtendedA::CombiningCyrillicLetterTse => "combining cyrillic letter tse",
CyrillicExtendedA::CombiningCyrillicLetterChe => "combining cyrillic letter che",
CyrillicExtendedA::CombiningCyrillicLetterSha => "combining cyrillic letter sha",
CyrillicExtendedA::CombiningCyrillicLetterShcha => "combining cyrillic letter shcha",
CyrillicExtendedA::CombiningCyrillicLetterFita => "combining cyrillic letter fita",
CyrillicExtendedA::CombiningCyrillicLetterEsDashTe => "combining cyrillic letter es-te",
CyrillicExtendedA::CombiningCyrillicLetterA => "combining cyrillic letter a",
CyrillicExtendedA::CombiningCyrillicLetterIe => "combining cyrillic letter ie",
CyrillicExtendedA::CombiningCyrillicLetterDjerv => "combining cyrillic letter djerv",
CyrillicExtendedA::CombiningCyrillicLetterMonographUk => "combining cyrillic letter monograph uk",
CyrillicExtendedA::CombiningCyrillicLetterYat => "combining cyrillic letter yat",
CyrillicExtendedA::CombiningCyrillicLetterYu => "combining cyrillic letter yu",
CyrillicExtendedA::CombiningCyrillicLetterIotifiedA => "combining cyrillic letter iotified a",
CyrillicExtendedA::CombiningCyrillicLetterLittleYus => "combining cyrillic letter little yus",
CyrillicExtendedA::CombiningCyrillicLetterBigYus => "combining cyrillic letter big yus",
}
}
}