mod constants {
pub const LETTER_A: char = 'Ꭰ';
pub const LETTER_E: char = 'Ꭱ';
pub const LETTER_I: char = 'Ꭲ';
pub const LETTER_O: char = 'Ꭳ';
pub const LETTER_U: char = 'Ꭴ';
pub const LETTER_V: char = 'Ꭵ';
pub const LETTER_GA: char = 'Ꭶ';
pub const LETTER_KA: char = 'Ꭷ';
pub const LETTER_GE: char = 'Ꭸ';
pub const LETTER_GI: char = 'Ꭹ';
pub const LETTER_GO: char = 'Ꭺ';
pub const LETTER_GU: char = 'Ꭻ';
pub const LETTER_GV: char = 'Ꭼ';
pub const LETTER_HA: char = 'Ꭽ';
pub const LETTER_HE: char = 'Ꭾ';
pub const LETTER_HI: char = 'Ꭿ';
pub const LETTER_HO: char = 'Ꮀ';
pub const LETTER_HU: char = 'Ꮁ';
pub const LETTER_HV: char = 'Ꮂ';
pub const LETTER_LA: char = 'Ꮃ';
pub const LETTER_LE: char = 'Ꮄ';
pub const LETTER_LI: char = 'Ꮅ';
pub const LETTER_LO: char = 'Ꮆ';
pub const LETTER_LU: char = 'Ꮇ';
pub const LETTER_LV: char = 'Ꮈ';
pub const LETTER_MA: char = 'Ꮉ';
pub const LETTER_ME: char = 'Ꮊ';
pub const LETTER_MI: char = 'Ꮋ';
pub const LETTER_MO: char = 'Ꮌ';
pub const LETTER_MU: char = 'Ꮍ';
pub const LETTER_NA: char = 'Ꮎ';
pub const LETTER_HNA: char = 'Ꮏ';
pub const LETTER_NAH: char = 'Ꮐ';
pub const LETTER_NE: char = 'Ꮑ';
pub const LETTER_NI: char = 'Ꮒ';
pub const LETTER_NO: char = 'Ꮓ';
pub const LETTER_NU: char = 'Ꮔ';
pub const LETTER_NV: char = 'Ꮕ';
pub const LETTER_QUA: char = 'Ꮖ';
pub const LETTER_QUE: char = 'Ꮗ';
pub const LETTER_QUI: char = 'Ꮘ';
pub const LETTER_QUO: char = 'Ꮙ';
pub const LETTER_QUU: char = 'Ꮚ';
pub const LETTER_QUV: char = 'Ꮛ';
pub const LETTER_SA: char = 'Ꮜ';
pub const LETTER_S: char = 'Ꮝ';
pub const LETTER_SE: char = 'Ꮞ';
pub const LETTER_SI: char = 'Ꮟ';
pub const LETTER_SO: char = 'Ꮠ';
pub const LETTER_SU: char = 'Ꮡ';
pub const LETTER_SV: char = 'Ꮢ';
pub const LETTER_DA: char = 'Ꮣ';
pub const LETTER_TA: char = 'Ꮤ';
pub const LETTER_DE: char = 'Ꮥ';
pub const LETTER_TE: char = 'Ꮦ';
pub const LETTER_DI: char = 'Ꮧ';
pub const LETTER_TI: char = 'Ꮨ';
pub const LETTER_DO: char = 'Ꮩ';
pub const LETTER_DU: char = 'Ꮪ';
pub const LETTER_DV: char = 'Ꮫ';
pub const LETTER_DLA: char = 'Ꮬ';
pub const LETTER_TLA: char = 'Ꮭ';
pub const LETTER_TLE: char = 'Ꮮ';
pub const LETTER_TLI: char = 'Ꮯ';
pub const LETTER_TLO: char = 'Ꮰ';
pub const LETTER_TLU: char = 'Ꮱ';
pub const LETTER_TLV: char = 'Ꮲ';
pub const LETTER_TSA: char = 'Ꮳ';
pub const LETTER_TSE: char = 'Ꮴ';
pub const LETTER_TSI: char = 'Ꮵ';
pub const LETTER_TSO: char = 'Ꮶ';
pub const LETTER_TSU: char = 'Ꮷ';
pub const LETTER_TSV: char = 'Ꮸ';
pub const LETTER_WA: char = 'Ꮹ';
pub const LETTER_WE: char = 'Ꮺ';
pub const LETTER_WI: char = 'Ꮻ';
pub const LETTER_WO: char = 'Ꮼ';
pub const LETTER_WU: char = 'Ꮽ';
pub const LETTER_WV: char = 'Ꮾ';
pub const LETTER_YA: char = 'Ꮿ';
pub const LETTER_YE: char = 'Ᏸ';
pub const LETTER_YI: char = 'Ᏹ';
pub const LETTER_YO: char = 'Ᏺ';
pub const LETTER_YU: char = 'Ᏻ';
pub const LETTER_YV: char = 'Ᏼ';
pub const LETTER_MV: char = 'Ᏽ';
pub const SMALL_LETTER_YE: char = 'ᏸ';
pub const SMALL_LETTER_YI: char = 'ᏹ';
pub const SMALL_LETTER_YO: char = 'ᏺ';
pub const SMALL_LETTER_YU: char = 'ᏻ';
pub const SMALL_LETTER_YV: char = 'ᏼ';
pub const SMALL_LETTER_MV: char = 'ᏽ';
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum Cherokee {
LetterA,
LetterE,
LetterI,
LetterO,
LetterU,
LetterV,
LetterGa,
LetterKa,
LetterGe,
LetterGi,
LetterGo,
LetterGu,
LetterGv,
LetterHa,
LetterHe,
LetterHi,
LetterHo,
LetterHu,
LetterHv,
LetterLa,
LetterLe,
LetterLi,
LetterLo,
LetterLu,
LetterLv,
LetterMa,
LetterMe,
LetterMi,
LetterMo,
LetterMu,
LetterNa,
LetterHna,
LetterNah,
LetterNe,
LetterNi,
LetterNo,
LetterNu,
LetterNv,
LetterQua,
LetterQue,
LetterQui,
LetterQuo,
LetterQuu,
LetterQuv,
LetterSa,
LetterS,
LetterSe,
LetterSi,
LetterSo,
LetterSu,
LetterSv,
LetterDa,
LetterTa,
LetterDe,
LetterTe,
LetterDi,
LetterTi,
LetterDo,
LetterDu,
LetterDv,
LetterDla,
LetterTla,
LetterTle,
LetterTli,
LetterTlo,
LetterTlu,
LetterTlv,
LetterTsa,
LetterTse,
LetterTsi,
LetterTso,
LetterTsu,
LetterTsv,
LetterWa,
LetterWe,
LetterWi,
LetterWo,
LetterWu,
LetterWv,
LetterYa,
LetterYe,
LetterYi,
LetterYo,
LetterYu,
LetterYv,
LetterMv,
SmallLetterYe,
SmallLetterYi,
SmallLetterYo,
SmallLetterYu,
SmallLetterYv,
SmallLetterMv,
}
impl Into<char> for Cherokee {
fn into(self) -> char {
use constants::*;
match self {
Cherokee::LetterA => LETTER_A,
Cherokee::LetterE => LETTER_E,
Cherokee::LetterI => LETTER_I,
Cherokee::LetterO => LETTER_O,
Cherokee::LetterU => LETTER_U,
Cherokee::LetterV => LETTER_V,
Cherokee::LetterGa => LETTER_GA,
Cherokee::LetterKa => LETTER_KA,
Cherokee::LetterGe => LETTER_GE,
Cherokee::LetterGi => LETTER_GI,
Cherokee::LetterGo => LETTER_GO,
Cherokee::LetterGu => LETTER_GU,
Cherokee::LetterGv => LETTER_GV,
Cherokee::LetterHa => LETTER_HA,
Cherokee::LetterHe => LETTER_HE,
Cherokee::LetterHi => LETTER_HI,
Cherokee::LetterHo => LETTER_HO,
Cherokee::LetterHu => LETTER_HU,
Cherokee::LetterHv => LETTER_HV,
Cherokee::LetterLa => LETTER_LA,
Cherokee::LetterLe => LETTER_LE,
Cherokee::LetterLi => LETTER_LI,
Cherokee::LetterLo => LETTER_LO,
Cherokee::LetterLu => LETTER_LU,
Cherokee::LetterLv => LETTER_LV,
Cherokee::LetterMa => LETTER_MA,
Cherokee::LetterMe => LETTER_ME,
Cherokee::LetterMi => LETTER_MI,
Cherokee::LetterMo => LETTER_MO,
Cherokee::LetterMu => LETTER_MU,
Cherokee::LetterNa => LETTER_NA,
Cherokee::LetterHna => LETTER_HNA,
Cherokee::LetterNah => LETTER_NAH,
Cherokee::LetterNe => LETTER_NE,
Cherokee::LetterNi => LETTER_NI,
Cherokee::LetterNo => LETTER_NO,
Cherokee::LetterNu => LETTER_NU,
Cherokee::LetterNv => LETTER_NV,
Cherokee::LetterQua => LETTER_QUA,
Cherokee::LetterQue => LETTER_QUE,
Cherokee::LetterQui => LETTER_QUI,
Cherokee::LetterQuo => LETTER_QUO,
Cherokee::LetterQuu => LETTER_QUU,
Cherokee::LetterQuv => LETTER_QUV,
Cherokee::LetterSa => LETTER_SA,
Cherokee::LetterS => LETTER_S,
Cherokee::LetterSe => LETTER_SE,
Cherokee::LetterSi => LETTER_SI,
Cherokee::LetterSo => LETTER_SO,
Cherokee::LetterSu => LETTER_SU,
Cherokee::LetterSv => LETTER_SV,
Cherokee::LetterDa => LETTER_DA,
Cherokee::LetterTa => LETTER_TA,
Cherokee::LetterDe => LETTER_DE,
Cherokee::LetterTe => LETTER_TE,
Cherokee::LetterDi => LETTER_DI,
Cherokee::LetterTi => LETTER_TI,
Cherokee::LetterDo => LETTER_DO,
Cherokee::LetterDu => LETTER_DU,
Cherokee::LetterDv => LETTER_DV,
Cherokee::LetterDla => LETTER_DLA,
Cherokee::LetterTla => LETTER_TLA,
Cherokee::LetterTle => LETTER_TLE,
Cherokee::LetterTli => LETTER_TLI,
Cherokee::LetterTlo => LETTER_TLO,
Cherokee::LetterTlu => LETTER_TLU,
Cherokee::LetterTlv => LETTER_TLV,
Cherokee::LetterTsa => LETTER_TSA,
Cherokee::LetterTse => LETTER_TSE,
Cherokee::LetterTsi => LETTER_TSI,
Cherokee::LetterTso => LETTER_TSO,
Cherokee::LetterTsu => LETTER_TSU,
Cherokee::LetterTsv => LETTER_TSV,
Cherokee::LetterWa => LETTER_WA,
Cherokee::LetterWe => LETTER_WE,
Cherokee::LetterWi => LETTER_WI,
Cherokee::LetterWo => LETTER_WO,
Cherokee::LetterWu => LETTER_WU,
Cherokee::LetterWv => LETTER_WV,
Cherokee::LetterYa => LETTER_YA,
Cherokee::LetterYe => LETTER_YE,
Cherokee::LetterYi => LETTER_YI,
Cherokee::LetterYo => LETTER_YO,
Cherokee::LetterYu => LETTER_YU,
Cherokee::LetterYv => LETTER_YV,
Cherokee::LetterMv => LETTER_MV,
Cherokee::SmallLetterYe => SMALL_LETTER_YE,
Cherokee::SmallLetterYi => SMALL_LETTER_YI,
Cherokee::SmallLetterYo => SMALL_LETTER_YO,
Cherokee::SmallLetterYu => SMALL_LETTER_YU,
Cherokee::SmallLetterYv => SMALL_LETTER_YV,
Cherokee::SmallLetterMv => SMALL_LETTER_MV,
}
}
}
impl std::convert::TryFrom<char> for Cherokee {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
use constants::*;
match c {
LETTER_A => Ok(Cherokee::LetterA),
LETTER_E => Ok(Cherokee::LetterE),
LETTER_I => Ok(Cherokee::LetterI),
LETTER_O => Ok(Cherokee::LetterO),
LETTER_U => Ok(Cherokee::LetterU),
LETTER_V => Ok(Cherokee::LetterV),
LETTER_GA => Ok(Cherokee::LetterGa),
LETTER_KA => Ok(Cherokee::LetterKa),
LETTER_GE => Ok(Cherokee::LetterGe),
LETTER_GI => Ok(Cherokee::LetterGi),
LETTER_GO => Ok(Cherokee::LetterGo),
LETTER_GU => Ok(Cherokee::LetterGu),
LETTER_GV => Ok(Cherokee::LetterGv),
LETTER_HA => Ok(Cherokee::LetterHa),
LETTER_HE => Ok(Cherokee::LetterHe),
LETTER_HI => Ok(Cherokee::LetterHi),
LETTER_HO => Ok(Cherokee::LetterHo),
LETTER_HU => Ok(Cherokee::LetterHu),
LETTER_HV => Ok(Cherokee::LetterHv),
LETTER_LA => Ok(Cherokee::LetterLa),
LETTER_LE => Ok(Cherokee::LetterLe),
LETTER_LI => Ok(Cherokee::LetterLi),
LETTER_LO => Ok(Cherokee::LetterLo),
LETTER_LU => Ok(Cherokee::LetterLu),
LETTER_LV => Ok(Cherokee::LetterLv),
LETTER_MA => Ok(Cherokee::LetterMa),
LETTER_ME => Ok(Cherokee::LetterMe),
LETTER_MI => Ok(Cherokee::LetterMi),
LETTER_MO => Ok(Cherokee::LetterMo),
LETTER_MU => Ok(Cherokee::LetterMu),
LETTER_NA => Ok(Cherokee::LetterNa),
LETTER_HNA => Ok(Cherokee::LetterHna),
LETTER_NAH => Ok(Cherokee::LetterNah),
LETTER_NE => Ok(Cherokee::LetterNe),
LETTER_NI => Ok(Cherokee::LetterNi),
LETTER_NO => Ok(Cherokee::LetterNo),
LETTER_NU => Ok(Cherokee::LetterNu),
LETTER_NV => Ok(Cherokee::LetterNv),
LETTER_QUA => Ok(Cherokee::LetterQua),
LETTER_QUE => Ok(Cherokee::LetterQue),
LETTER_QUI => Ok(Cherokee::LetterQui),
LETTER_QUO => Ok(Cherokee::LetterQuo),
LETTER_QUU => Ok(Cherokee::LetterQuu),
LETTER_QUV => Ok(Cherokee::LetterQuv),
LETTER_SA => Ok(Cherokee::LetterSa),
LETTER_S => Ok(Cherokee::LetterS),
LETTER_SE => Ok(Cherokee::LetterSe),
LETTER_SI => Ok(Cherokee::LetterSi),
LETTER_SO => Ok(Cherokee::LetterSo),
LETTER_SU => Ok(Cherokee::LetterSu),
LETTER_SV => Ok(Cherokee::LetterSv),
LETTER_DA => Ok(Cherokee::LetterDa),
LETTER_TA => Ok(Cherokee::LetterTa),
LETTER_DE => Ok(Cherokee::LetterDe),
LETTER_TE => Ok(Cherokee::LetterTe),
LETTER_DI => Ok(Cherokee::LetterDi),
LETTER_TI => Ok(Cherokee::LetterTi),
LETTER_DO => Ok(Cherokee::LetterDo),
LETTER_DU => Ok(Cherokee::LetterDu),
LETTER_DV => Ok(Cherokee::LetterDv),
LETTER_DLA => Ok(Cherokee::LetterDla),
LETTER_TLA => Ok(Cherokee::LetterTla),
LETTER_TLE => Ok(Cherokee::LetterTle),
LETTER_TLI => Ok(Cherokee::LetterTli),
LETTER_TLO => Ok(Cherokee::LetterTlo),
LETTER_TLU => Ok(Cherokee::LetterTlu),
LETTER_TLV => Ok(Cherokee::LetterTlv),
LETTER_TSA => Ok(Cherokee::LetterTsa),
LETTER_TSE => Ok(Cherokee::LetterTse),
LETTER_TSI => Ok(Cherokee::LetterTsi),
LETTER_TSO => Ok(Cherokee::LetterTso),
LETTER_TSU => Ok(Cherokee::LetterTsu),
LETTER_TSV => Ok(Cherokee::LetterTsv),
LETTER_WA => Ok(Cherokee::LetterWa),
LETTER_WE => Ok(Cherokee::LetterWe),
LETTER_WI => Ok(Cherokee::LetterWi),
LETTER_WO => Ok(Cherokee::LetterWo),
LETTER_WU => Ok(Cherokee::LetterWu),
LETTER_WV => Ok(Cherokee::LetterWv),
LETTER_YA => Ok(Cherokee::LetterYa),
LETTER_YE => Ok(Cherokee::LetterYe),
LETTER_YI => Ok(Cherokee::LetterYi),
LETTER_YO => Ok(Cherokee::LetterYo),
LETTER_YU => Ok(Cherokee::LetterYu),
LETTER_YV => Ok(Cherokee::LetterYv),
LETTER_MV => Ok(Cherokee::LetterMv),
SMALL_LETTER_YE => Ok(Cherokee::SmallLetterYe),
SMALL_LETTER_YI => Ok(Cherokee::SmallLetterYi),
SMALL_LETTER_YO => Ok(Cherokee::SmallLetterYo),
SMALL_LETTER_YU => Ok(Cherokee::SmallLetterYu),
SMALL_LETTER_YV => Ok(Cherokee::SmallLetterYv),
SMALL_LETTER_MV => Ok(Cherokee::SmallLetterMv),
_ => Err(()),
}
}
}
impl Into<u32> for Cherokee {
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 Cherokee {
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 Cherokee {
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 Cherokee {
pub fn new() -> Self {
Cherokee::LetterA
}
pub fn name(&self) -> &str {
match self {
Cherokee::LetterA => "cherokee letter a",
Cherokee::LetterE => "cherokee letter e",
Cherokee::LetterI => "cherokee letter i",
Cherokee::LetterO => "cherokee letter o",
Cherokee::LetterU => "cherokee letter u",
Cherokee::LetterV => "cherokee letter v",
Cherokee::LetterGa => "cherokee letter ga",
Cherokee::LetterKa => "cherokee letter ka",
Cherokee::LetterGe => "cherokee letter ge",
Cherokee::LetterGi => "cherokee letter gi",
Cherokee::LetterGo => "cherokee letter go",
Cherokee::LetterGu => "cherokee letter gu",
Cherokee::LetterGv => "cherokee letter gv",
Cherokee::LetterHa => "cherokee letter ha",
Cherokee::LetterHe => "cherokee letter he",
Cherokee::LetterHi => "cherokee letter hi",
Cherokee::LetterHo => "cherokee letter ho",
Cherokee::LetterHu => "cherokee letter hu",
Cherokee::LetterHv => "cherokee letter hv",
Cherokee::LetterLa => "cherokee letter la",
Cherokee::LetterLe => "cherokee letter le",
Cherokee::LetterLi => "cherokee letter li",
Cherokee::LetterLo => "cherokee letter lo",
Cherokee::LetterLu => "cherokee letter lu",
Cherokee::LetterLv => "cherokee letter lv",
Cherokee::LetterMa => "cherokee letter ma",
Cherokee::LetterMe => "cherokee letter me",
Cherokee::LetterMi => "cherokee letter mi",
Cherokee::LetterMo => "cherokee letter mo",
Cherokee::LetterMu => "cherokee letter mu",
Cherokee::LetterNa => "cherokee letter na",
Cherokee::LetterHna => "cherokee letter hna",
Cherokee::LetterNah => "cherokee letter nah",
Cherokee::LetterNe => "cherokee letter ne",
Cherokee::LetterNi => "cherokee letter ni",
Cherokee::LetterNo => "cherokee letter no",
Cherokee::LetterNu => "cherokee letter nu",
Cherokee::LetterNv => "cherokee letter nv",
Cherokee::LetterQua => "cherokee letter qua",
Cherokee::LetterQue => "cherokee letter que",
Cherokee::LetterQui => "cherokee letter qui",
Cherokee::LetterQuo => "cherokee letter quo",
Cherokee::LetterQuu => "cherokee letter quu",
Cherokee::LetterQuv => "cherokee letter quv",
Cherokee::LetterSa => "cherokee letter sa",
Cherokee::LetterS => "cherokee letter s",
Cherokee::LetterSe => "cherokee letter se",
Cherokee::LetterSi => "cherokee letter si",
Cherokee::LetterSo => "cherokee letter so",
Cherokee::LetterSu => "cherokee letter su",
Cherokee::LetterSv => "cherokee letter sv",
Cherokee::LetterDa => "cherokee letter da",
Cherokee::LetterTa => "cherokee letter ta",
Cherokee::LetterDe => "cherokee letter de",
Cherokee::LetterTe => "cherokee letter te",
Cherokee::LetterDi => "cherokee letter di",
Cherokee::LetterTi => "cherokee letter ti",
Cherokee::LetterDo => "cherokee letter do",
Cherokee::LetterDu => "cherokee letter du",
Cherokee::LetterDv => "cherokee letter dv",
Cherokee::LetterDla => "cherokee letter dla",
Cherokee::LetterTla => "cherokee letter tla",
Cherokee::LetterTle => "cherokee letter tle",
Cherokee::LetterTli => "cherokee letter tli",
Cherokee::LetterTlo => "cherokee letter tlo",
Cherokee::LetterTlu => "cherokee letter tlu",
Cherokee::LetterTlv => "cherokee letter tlv",
Cherokee::LetterTsa => "cherokee letter tsa",
Cherokee::LetterTse => "cherokee letter tse",
Cherokee::LetterTsi => "cherokee letter tsi",
Cherokee::LetterTso => "cherokee letter tso",
Cherokee::LetterTsu => "cherokee letter tsu",
Cherokee::LetterTsv => "cherokee letter tsv",
Cherokee::LetterWa => "cherokee letter wa",
Cherokee::LetterWe => "cherokee letter we",
Cherokee::LetterWi => "cherokee letter wi",
Cherokee::LetterWo => "cherokee letter wo",
Cherokee::LetterWu => "cherokee letter wu",
Cherokee::LetterWv => "cherokee letter wv",
Cherokee::LetterYa => "cherokee letter ya",
Cherokee::LetterYe => "cherokee letter ye",
Cherokee::LetterYi => "cherokee letter yi",
Cherokee::LetterYo => "cherokee letter yo",
Cherokee::LetterYu => "cherokee letter yu",
Cherokee::LetterYv => "cherokee letter yv",
Cherokee::LetterMv => "cherokee letter mv",
Cherokee::SmallLetterYe => "cherokee small letter ye",
Cherokee::SmallLetterYi => "cherokee small letter yi",
Cherokee::SmallLetterYo => "cherokee small letter yo",
Cherokee::SmallLetterYu => "cherokee small letter yu",
Cherokee::SmallLetterYv => "cherokee small letter yv",
Cherokee::SmallLetterMv => "cherokee small letter mv",
}
}
}