#[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Vowel { A, I, U, E, O, N, } #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum VowelLen { Short, Long, } #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct VowelPhoneme(pub Vowel, pub VowelLen); impl VowelPhoneme { pub const fn code(self) -> u8 { use Vowel::*; use VowelLen::*; match (self.0, self.1) { (A, Short) => 0x01, (A, Long) => 0x02, (I, Short) => 0x14, (I, Long) => 0x15, (U, Short) => 0x29, (U, Long) => 0x2A, (E, Short) => 0x0A, (E, Long) => 0x0E, (O, Short) => 0x1D, (O, Long) => 0x1E, (N, _) => 0x1B, } } }