Trait enum_cycling::IntoEnumCycle[][src]

pub trait IntoEnumCycle {
    fn up(&self) -> Self;
fn down(&self) -> Self; }

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,
        }
    }
}

Required methods

fn up(&self) -> Self[src]

fn down(&self) -> Self[src]

Loading content...

Implementors

Loading content...