Trait strum::IntoEnumIterator
source · pub trait IntoEnumIterator: Sized {
type Iterator: Iterator<Item = Self>;
// Required method
fn iter() -> Self::Iterator;
}
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::{EnumIter, 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)
}
}
generic_iterator::<Color, _>(|color| println!("{:?}", color));