Trait enum_cycling::IntoEnumCycle [−][src]
This trait is the central piece to move up and down an Enum
.
It may auto generated for you using the #[derive(EnumCycle]
feature.
Example
//Bring it into scope use enum_cycling::IntoEnumCycle; use enum_cycling_derive::EnumCycle; #[derive(PartialEq, Debug, EnumCycle)] enum MainMenu { NewGame, Continue, Quit, } fn main() { assert_eq!(MainMenu::NewGame.down(), MainMenu::Continue); }
The generated code should look something along the lines of:
impl EnumCycle for MainMenu {
fn up(&self) -> Self {
match *self {
Self::NewGame => Self::Quit,
Self::Continue => Self::NewGame,
Self::Quit => Self::Continue,
}
}
fn down(&self) -> Self {
match *self {
Self::NewGame => Self::Continue,
Self::Continue => Self::Quit,
Self::Quit => Self::NewGame,
}
}
}