Trait enum_iterator::IntoEnumIterator
source · [−]pub trait IntoEnumIterator: Sized {
type Iterator: Iterator<Item = Self> + ExactSizeIterator + FusedIterator + Copy;
const VARIANT_COUNT: usize;
fn into_enum_iter() -> Self::Iterator;
}
Expand description
Trait to iterate over the variants of a field-less enum.
Field-less (a.k.a. C-like) enums are enums whose variants don’t have additional data.
This trait is meant to be derived.
Example
use enum_iterator::IntoEnumIterator;
#[derive(Clone, IntoEnumIterator, PartialEq)]
enum Direction { North, South, West, East }
fn main() {
assert_eq!(Direction::VARIANT_COUNT, 4);
assert!(Direction::into_enum_iter().eq([Direction::North,
Direction::South, Direction::West, Direction::East].iter()
.cloned()));
}
Associated Types
type Iterator: Iterator<Item = Self> + ExactSizeIterator + FusedIterator + Copy
type Iterator: Iterator<Item = Self> + ExactSizeIterator + FusedIterator + Copy
Type of the iterator over the variants.
Associated Constants
const VARIANT_COUNT: usize
const VARIANT_COUNT: usize
Number of variants.
Required methods
fn into_enum_iter() -> Self::Iterator
fn into_enum_iter() -> Self::Iterator
Returns an iterator over the variants.
Variants are yielded in the order they are defined in the enum.