#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum PhaistosDisc {
SignPedestrian,
SignPlumedHead,
SignTattooedHead,
SignCaptive,
SignChild,
SignWoman,
SignHelmet,
SignGauntlet,
SignTiara,
SignArrow,
SignBow,
SignShield,
SignClub,
SignManacles,
SignMattock,
SignSaw,
SignLid,
SignBoomerang,
SignCarpentryPlane,
SignDolium,
SignComb,
SignSling,
SignColumn,
SignBeehive,
SignShip,
SignHorn,
SignHide,
SignBullsLeg,
SignCat,
SignRam,
SignEagle,
SignDove,
SignTunny,
SignBee,
SignPlaneTree,
SignVine,
SignPapyrus,
SignRosette,
SignLily,
SignOxBack,
SignFlute,
SignGrater,
SignStrainer,
SignSmallAxe,
SignWavyBand,
SignCombiningObliqueStroke,
}
impl Into<char> for PhaistosDisc {
fn into(self) -> char {
match self {
PhaistosDisc::SignPedestrian => '𐇐',
PhaistosDisc::SignPlumedHead => '𐇑',
PhaistosDisc::SignTattooedHead => '𐇒',
PhaistosDisc::SignCaptive => '𐇓',
PhaistosDisc::SignChild => '𐇔',
PhaistosDisc::SignWoman => '𐇕',
PhaistosDisc::SignHelmet => '𐇖',
PhaistosDisc::SignGauntlet => '𐇗',
PhaistosDisc::SignTiara => '𐇘',
PhaistosDisc::SignArrow => '𐇙',
PhaistosDisc::SignBow => '𐇚',
PhaistosDisc::SignShield => '𐇛',
PhaistosDisc::SignClub => '𐇜',
PhaistosDisc::SignManacles => '𐇝',
PhaistosDisc::SignMattock => '𐇞',
PhaistosDisc::SignSaw => '𐇟',
PhaistosDisc::SignLid => '𐇠',
PhaistosDisc::SignBoomerang => '𐇡',
PhaistosDisc::SignCarpentryPlane => '𐇢',
PhaistosDisc::SignDolium => '𐇣',
PhaistosDisc::SignComb => '𐇤',
PhaistosDisc::SignSling => '𐇥',
PhaistosDisc::SignColumn => '𐇦',
PhaistosDisc::SignBeehive => '𐇧',
PhaistosDisc::SignShip => '𐇨',
PhaistosDisc::SignHorn => '𐇩',
PhaistosDisc::SignHide => '𐇪',
PhaistosDisc::SignBullsLeg => '𐇫',
PhaistosDisc::SignCat => '𐇬',
PhaistosDisc::SignRam => '𐇭',
PhaistosDisc::SignEagle => '𐇮',
PhaistosDisc::SignDove => '𐇯',
PhaistosDisc::SignTunny => '𐇰',
PhaistosDisc::SignBee => '𐇱',
PhaistosDisc::SignPlaneTree => '𐇲',
PhaistosDisc::SignVine => '𐇳',
PhaistosDisc::SignPapyrus => '𐇴',
PhaistosDisc::SignRosette => '𐇵',
PhaistosDisc::SignLily => '𐇶',
PhaistosDisc::SignOxBack => '𐇷',
PhaistosDisc::SignFlute => '𐇸',
PhaistosDisc::SignGrater => '𐇹',
PhaistosDisc::SignStrainer => '𐇺',
PhaistosDisc::SignSmallAxe => '𐇻',
PhaistosDisc::SignWavyBand => '𐇼',
PhaistosDisc::SignCombiningObliqueStroke => '𐇽',
}
}
}
impl std::convert::TryFrom<char> for PhaistosDisc {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'𐇐' => Ok(PhaistosDisc::SignPedestrian),
'𐇑' => Ok(PhaistosDisc::SignPlumedHead),
'𐇒' => Ok(PhaistosDisc::SignTattooedHead),
'𐇓' => Ok(PhaistosDisc::SignCaptive),
'𐇔' => Ok(PhaistosDisc::SignChild),
'𐇕' => Ok(PhaistosDisc::SignWoman),
'𐇖' => Ok(PhaistosDisc::SignHelmet),
'𐇗' => Ok(PhaistosDisc::SignGauntlet),
'𐇘' => Ok(PhaistosDisc::SignTiara),
'𐇙' => Ok(PhaistosDisc::SignArrow),
'𐇚' => Ok(PhaistosDisc::SignBow),
'𐇛' => Ok(PhaistosDisc::SignShield),
'𐇜' => Ok(PhaistosDisc::SignClub),
'𐇝' => Ok(PhaistosDisc::SignManacles),
'𐇞' => Ok(PhaistosDisc::SignMattock),
'𐇟' => Ok(PhaistosDisc::SignSaw),
'𐇠' => Ok(PhaistosDisc::SignLid),
'𐇡' => Ok(PhaistosDisc::SignBoomerang),
'𐇢' => Ok(PhaistosDisc::SignCarpentryPlane),
'𐇣' => Ok(PhaistosDisc::SignDolium),
'𐇤' => Ok(PhaistosDisc::SignComb),
'𐇥' => Ok(PhaistosDisc::SignSling),
'𐇦' => Ok(PhaistosDisc::SignColumn),
'𐇧' => Ok(PhaistosDisc::SignBeehive),
'𐇨' => Ok(PhaistosDisc::SignShip),
'𐇩' => Ok(PhaistosDisc::SignHorn),
'𐇪' => Ok(PhaistosDisc::SignHide),
'𐇫' => Ok(PhaistosDisc::SignBullsLeg),
'𐇬' => Ok(PhaistosDisc::SignCat),
'𐇭' => Ok(PhaistosDisc::SignRam),
'𐇮' => Ok(PhaistosDisc::SignEagle),
'𐇯' => Ok(PhaistosDisc::SignDove),
'𐇰' => Ok(PhaistosDisc::SignTunny),
'𐇱' => Ok(PhaistosDisc::SignBee),
'𐇲' => Ok(PhaistosDisc::SignPlaneTree),
'𐇳' => Ok(PhaistosDisc::SignVine),
'𐇴' => Ok(PhaistosDisc::SignPapyrus),
'𐇵' => Ok(PhaistosDisc::SignRosette),
'𐇶' => Ok(PhaistosDisc::SignLily),
'𐇷' => Ok(PhaistosDisc::SignOxBack),
'𐇸' => Ok(PhaistosDisc::SignFlute),
'𐇹' => Ok(PhaistosDisc::SignGrater),
'𐇺' => Ok(PhaistosDisc::SignStrainer),
'𐇻' => Ok(PhaistosDisc::SignSmallAxe),
'𐇼' => Ok(PhaistosDisc::SignWavyBand),
'𐇽' => Ok(PhaistosDisc::SignCombiningObliqueStroke),
_ => Err(()),
}
}
}
impl Into<u32> for PhaistosDisc {
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 PhaistosDisc {
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 PhaistosDisc {
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 PhaistosDisc {
pub fn new() -> Self {
PhaistosDisc::SignPedestrian
}
pub fn name(&self) -> String {
let s = std::format!("PhaistosDisc{:#?}", self);
string_morph::to_sentence_case(&s)
}
}