pub trait IntoEnumIterator: Sized {
type Iterator: Iterator<Item = Self> + Clone + DoubleEndedIterator + ExactSizeIterator + FusedIterator;
// Required method
fn iter() -> Self::Iterator;
}Expand description
Convienence re-export so consuming crates of our library one can use derived EnumIter features for our types
This trait designates that an Enum can be iterated over. It can
be auto generated using the EnumIter derive macro.
§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));Required Associated Types§
type Iterator: Iterator<Item = Self> + Clone + DoubleEndedIterator + ExactSizeIterator + FusedIterator
Required Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.