diff options
| author | Alexander Kassouni <alex@kassouni.net> | 2026-09-05 22:43:52 -0700 |
|---|---|---|
| committer | Alexander Kassouni <alex@kassouni.net> | 2026-09-05 22:43:52 -0700 |
| commit | 24ec2a92b56ca4296fe65b70524e36a8e1c67c2e (patch) | |
| tree | 51fd27e87cbd419ab74f016852fbaa2d86babd9a /src/phonemes/phonemes.rs | |
| parent | 7f5dd54c60c70f29d0c8abedc28dd5ed199de94d (diff) | |
phonemes
Diffstat (limited to 'src/phonemes/phonemes.rs')
| -rw-r--r-- | src/phonemes/phonemes.rs | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/phonemes/phonemes.rs b/src/phonemes/phonemes.rs index 9313c21..3ec5e56 100644 --- a/src/phonemes/phonemes.rs +++ b/src/phonemes/phonemes.rs @@ -1,6 +1,32 @@ -#[derive(Debug, PartialEq, Eq)] +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 + } +} |