[][src]Trait strum::IntoEnumIterator

pub trait IntoEnumIterator: Sized {
    type Iterator: Iterator<Item = Self>;
    fn iter() -> Self::Iterator;
}

This trait designates that an Enum can be iterated over. It can be auto generated using strum_macros on your behalf.

Example

// You need to bring the type into scope to use it!!!
use strum::IntoEnumIterator;

#[derive(EnumIter,Debug)]
enum Color {
        Red,
        Green { range:usize },
        Blue(usize),
        Yellow,
}

// Iterate over the items in an enum and perform some function on them.
fn generic_iterator<E, F>(pred: F)
where
    E: IntoEnumIterator,
    F: Fn(E),
{
    for e in E::iter() {
        pred(e)
    }
}

fn main() {
    generic_iterator::<Color, _>(|color| println!("{:?}", color));
}

Associated Types

type Iterator: Iterator<Item = Self>

Loading content...

Required methods

fn iter() -> Self::Iterator

Loading content...

Implementors

Loading content...