use super::consonant::Consonant; use super::digit::Digit; use super::digraph::Digraph; use super::vowel::VowelPhoneme; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Phoneme { Vowel(VowelPhoneme), Consonant(Consonant), Digit(Digit), Digraph(Digraph), Silent, Raw(u8), } impl Phoneme { pub const fn code(self) -> u8 { match self { Phoneme::Vowel(v) => v.code(), Phoneme::Consonant(c) => c.code(), Phoneme::Digit(d) => d.code(), Phoneme::Digraph(d) => d.code(), Phoneme::Silent => 0x00, Phoneme::Raw(n) => n, } } pub const fn plays(self) -> bool { let n = self.code(); n != 0 && n <= 0x77 } }