#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum YijingHexagramSymbols {
HexagramForTheCreativeHeaven,
HexagramForTheReceptiveEarth,
HexagramForDifficultyAtTheBeginning,
HexagramForYouthfulFolly,
HexagramForWaiting,
HexagramForConflict,
HexagramForTheArmy,
HexagramForHoldingTogether,
HexagramForSmallTaming,
HexagramForTreading,
HexagramForPeace,
HexagramForStandstill,
HexagramForFellowship,
HexagramForGreatPossession,
HexagramForModesty,
HexagramForEnthusiasm,
HexagramForFollowing,
HexagramForWorkOnTheDecayed,
HexagramForApproach,
HexagramForContemplation,
HexagramForBitingThrough,
HexagramForGrace,
HexagramForSplittingApart,
HexagramForReturn,
HexagramForInnocence,
HexagramForGreatTaming,
HexagramForMouthCorners,
HexagramForGreatPreponderance,
HexagramForTheAbysmalWater,
HexagramForTheClingingFire,
HexagramForInfluence,
HexagramForDuration,
HexagramForRetreat,
HexagramForGreatPower,
HexagramForProgress,
HexagramForDarkeningOfTheLight,
HexagramForTheFamily,
HexagramForOpposition,
HexagramForObstruction,
HexagramForDeliverance,
HexagramForDecrease,
HexagramForIncrease,
HexagramForBreakthrough,
HexagramForComingToMeet,
HexagramForGatheringTogether,
HexagramForPushingUpward,
HexagramForOppression,
HexagramForTheWell,
HexagramForRevolution,
HexagramForTheCauldron,
HexagramForTheArousingThunder,
HexagramForTheKeepingStillMountain,
HexagramForDevelopment,
HexagramForTheMarryingMaiden,
HexagramForAbundance,
HexagramForTheWanderer,
HexagramForTheGentleWind,
HexagramForTheJoyousLake,
HexagramForDispersion,
HexagramForLimitation,
HexagramForInnerTruth,
HexagramForSmallPreponderance,
HexagramForAfterCompletion,
}
impl Into<char> for YijingHexagramSymbols {
fn into(self) -> char {
match self {
YijingHexagramSymbols::HexagramForTheCreativeHeaven => '䷀',
YijingHexagramSymbols::HexagramForTheReceptiveEarth => '䷁',
YijingHexagramSymbols::HexagramForDifficultyAtTheBeginning => '䷂',
YijingHexagramSymbols::HexagramForYouthfulFolly => '䷃',
YijingHexagramSymbols::HexagramForWaiting => '䷄',
YijingHexagramSymbols::HexagramForConflict => '䷅',
YijingHexagramSymbols::HexagramForTheArmy => '䷆',
YijingHexagramSymbols::HexagramForHoldingTogether => '䷇',
YijingHexagramSymbols::HexagramForSmallTaming => '䷈',
YijingHexagramSymbols::HexagramForTreading => '䷉',
YijingHexagramSymbols::HexagramForPeace => '䷊',
YijingHexagramSymbols::HexagramForStandstill => '䷋',
YijingHexagramSymbols::HexagramForFellowship => '䷌',
YijingHexagramSymbols::HexagramForGreatPossession => '䷍',
YijingHexagramSymbols::HexagramForModesty => '䷎',
YijingHexagramSymbols::HexagramForEnthusiasm => '䷏',
YijingHexagramSymbols::HexagramForFollowing => '䷐',
YijingHexagramSymbols::HexagramForWorkOnTheDecayed => '䷑',
YijingHexagramSymbols::HexagramForApproach => '䷒',
YijingHexagramSymbols::HexagramForContemplation => '䷓',
YijingHexagramSymbols::HexagramForBitingThrough => '䷔',
YijingHexagramSymbols::HexagramForGrace => '䷕',
YijingHexagramSymbols::HexagramForSplittingApart => '䷖',
YijingHexagramSymbols::HexagramForReturn => '䷗',
YijingHexagramSymbols::HexagramForInnocence => '䷘',
YijingHexagramSymbols::HexagramForGreatTaming => '䷙',
YijingHexagramSymbols::HexagramForMouthCorners => '䷚',
YijingHexagramSymbols::HexagramForGreatPreponderance => '䷛',
YijingHexagramSymbols::HexagramForTheAbysmalWater => '䷜',
YijingHexagramSymbols::HexagramForTheClingingFire => '䷝',
YijingHexagramSymbols::HexagramForInfluence => '䷞',
YijingHexagramSymbols::HexagramForDuration => '䷟',
YijingHexagramSymbols::HexagramForRetreat => '䷠',
YijingHexagramSymbols::HexagramForGreatPower => '䷡',
YijingHexagramSymbols::HexagramForProgress => '䷢',
YijingHexagramSymbols::HexagramForDarkeningOfTheLight => '䷣',
YijingHexagramSymbols::HexagramForTheFamily => '䷤',
YijingHexagramSymbols::HexagramForOpposition => '䷥',
YijingHexagramSymbols::HexagramForObstruction => '䷦',
YijingHexagramSymbols::HexagramForDeliverance => '䷧',
YijingHexagramSymbols::HexagramForDecrease => '䷨',
YijingHexagramSymbols::HexagramForIncrease => '䷩',
YijingHexagramSymbols::HexagramForBreakthrough => '䷪',
YijingHexagramSymbols::HexagramForComingToMeet => '䷫',
YijingHexagramSymbols::HexagramForGatheringTogether => '䷬',
YijingHexagramSymbols::HexagramForPushingUpward => '䷭',
YijingHexagramSymbols::HexagramForOppression => '䷮',
YijingHexagramSymbols::HexagramForTheWell => '䷯',
YijingHexagramSymbols::HexagramForRevolution => '䷰',
YijingHexagramSymbols::HexagramForTheCauldron => '䷱',
YijingHexagramSymbols::HexagramForTheArousingThunder => '䷲',
YijingHexagramSymbols::HexagramForTheKeepingStillMountain => '䷳',
YijingHexagramSymbols::HexagramForDevelopment => '䷴',
YijingHexagramSymbols::HexagramForTheMarryingMaiden => '䷵',
YijingHexagramSymbols::HexagramForAbundance => '䷶',
YijingHexagramSymbols::HexagramForTheWanderer => '䷷',
YijingHexagramSymbols::HexagramForTheGentleWind => '䷸',
YijingHexagramSymbols::HexagramForTheJoyousLake => '䷹',
YijingHexagramSymbols::HexagramForDispersion => '䷺',
YijingHexagramSymbols::HexagramForLimitation => '䷻',
YijingHexagramSymbols::HexagramForInnerTruth => '䷼',
YijingHexagramSymbols::HexagramForSmallPreponderance => '䷽',
YijingHexagramSymbols::HexagramForAfterCompletion => '䷾',
}
}
}
impl std::convert::TryFrom<char> for YijingHexagramSymbols {
type Error = ();
fn try_from(c: char) -> Result<Self, Self::Error> {
match c {
'䷀' => Ok(YijingHexagramSymbols::HexagramForTheCreativeHeaven),
'䷁' => Ok(YijingHexagramSymbols::HexagramForTheReceptiveEarth),
'䷂' => Ok(YijingHexagramSymbols::HexagramForDifficultyAtTheBeginning),
'䷃' => Ok(YijingHexagramSymbols::HexagramForYouthfulFolly),
'䷄' => Ok(YijingHexagramSymbols::HexagramForWaiting),
'䷅' => Ok(YijingHexagramSymbols::HexagramForConflict),
'䷆' => Ok(YijingHexagramSymbols::HexagramForTheArmy),
'䷇' => Ok(YijingHexagramSymbols::HexagramForHoldingTogether),
'䷈' => Ok(YijingHexagramSymbols::HexagramForSmallTaming),
'䷉' => Ok(YijingHexagramSymbols::HexagramForTreading),
'䷊' => Ok(YijingHexagramSymbols::HexagramForPeace),
'䷋' => Ok(YijingHexagramSymbols::HexagramForStandstill),
'䷌' => Ok(YijingHexagramSymbols::HexagramForFellowship),
'䷍' => Ok(YijingHexagramSymbols::HexagramForGreatPossession),
'䷎' => Ok(YijingHexagramSymbols::HexagramForModesty),
'䷏' => Ok(YijingHexagramSymbols::HexagramForEnthusiasm),
'䷐' => Ok(YijingHexagramSymbols::HexagramForFollowing),
'䷑' => Ok(YijingHexagramSymbols::HexagramForWorkOnTheDecayed),
'䷒' => Ok(YijingHexagramSymbols::HexagramForApproach),
'䷓' => Ok(YijingHexagramSymbols::HexagramForContemplation),
'䷔' => Ok(YijingHexagramSymbols::HexagramForBitingThrough),
'䷕' => Ok(YijingHexagramSymbols::HexagramForGrace),
'䷖' => Ok(YijingHexagramSymbols::HexagramForSplittingApart),
'䷗' => Ok(YijingHexagramSymbols::HexagramForReturn),
'䷘' => Ok(YijingHexagramSymbols::HexagramForInnocence),
'䷙' => Ok(YijingHexagramSymbols::HexagramForGreatTaming),
'䷚' => Ok(YijingHexagramSymbols::HexagramForMouthCorners),
'䷛' => Ok(YijingHexagramSymbols::HexagramForGreatPreponderance),
'䷜' => Ok(YijingHexagramSymbols::HexagramForTheAbysmalWater),
'䷝' => Ok(YijingHexagramSymbols::HexagramForTheClingingFire),
'䷞' => Ok(YijingHexagramSymbols::HexagramForInfluence),
'䷟' => Ok(YijingHexagramSymbols::HexagramForDuration),
'䷠' => Ok(YijingHexagramSymbols::HexagramForRetreat),
'䷡' => Ok(YijingHexagramSymbols::HexagramForGreatPower),
'䷢' => Ok(YijingHexagramSymbols::HexagramForProgress),
'䷣' => Ok(YijingHexagramSymbols::HexagramForDarkeningOfTheLight),
'䷤' => Ok(YijingHexagramSymbols::HexagramForTheFamily),
'䷥' => Ok(YijingHexagramSymbols::HexagramForOpposition),
'䷦' => Ok(YijingHexagramSymbols::HexagramForObstruction),
'䷧' => Ok(YijingHexagramSymbols::HexagramForDeliverance),
'䷨' => Ok(YijingHexagramSymbols::HexagramForDecrease),
'䷩' => Ok(YijingHexagramSymbols::HexagramForIncrease),
'䷪' => Ok(YijingHexagramSymbols::HexagramForBreakthrough),
'䷫' => Ok(YijingHexagramSymbols::HexagramForComingToMeet),
'䷬' => Ok(YijingHexagramSymbols::HexagramForGatheringTogether),
'䷭' => Ok(YijingHexagramSymbols::HexagramForPushingUpward),
'䷮' => Ok(YijingHexagramSymbols::HexagramForOppression),
'䷯' => Ok(YijingHexagramSymbols::HexagramForTheWell),
'䷰' => Ok(YijingHexagramSymbols::HexagramForRevolution),
'䷱' => Ok(YijingHexagramSymbols::HexagramForTheCauldron),
'䷲' => Ok(YijingHexagramSymbols::HexagramForTheArousingThunder),
'䷳' => Ok(YijingHexagramSymbols::HexagramForTheKeepingStillMountain),
'䷴' => Ok(YijingHexagramSymbols::HexagramForDevelopment),
'䷵' => Ok(YijingHexagramSymbols::HexagramForTheMarryingMaiden),
'䷶' => Ok(YijingHexagramSymbols::HexagramForAbundance),
'䷷' => Ok(YijingHexagramSymbols::HexagramForTheWanderer),
'䷸' => Ok(YijingHexagramSymbols::HexagramForTheGentleWind),
'䷹' => Ok(YijingHexagramSymbols::HexagramForTheJoyousLake),
'䷺' => Ok(YijingHexagramSymbols::HexagramForDispersion),
'䷻' => Ok(YijingHexagramSymbols::HexagramForLimitation),
'䷼' => Ok(YijingHexagramSymbols::HexagramForInnerTruth),
'䷽' => Ok(YijingHexagramSymbols::HexagramForSmallPreponderance),
'䷾' => Ok(YijingHexagramSymbols::HexagramForAfterCompletion),
_ => Err(()),
}
}
}
impl Into<u32> for YijingHexagramSymbols {
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 YijingHexagramSymbols {
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 YijingHexagramSymbols {
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 YijingHexagramSymbols {
pub fn new() -> Self {
YijingHexagramSymbols::HexagramForTheCreativeHeaven
}
pub fn name(&self) -> String {
let s = std::format!("YijingHexagramSymbols{:#?}", self);
string_morph::to_sentence_case(&s)
}
}