Trait strum::IntoEnumIterator [] [src]

pub trait IntoEnumIterator {
    type Iterator;
    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,
}

// Iterating over any enum requires 2 type parameters
// A 3rd is used in this example to allow passing a predicate
fn generic_iterator<E, I, F>(pred: F)
                     where E: IntoEnumIterator<Iterator=I>,
                           I: Iterator<Item=E>,
                           F: Fn(E) {
    for e in E::iter() {
        pred(e)
    }
}

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

Associated Types

Required Methods

Implementors