Trait strum::IntoEnumIterator
source · Expand description
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));
}