pub trait IntoEnumIterator {
    type Iterator: Iterator + 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 of the iterator over the variants.

Associated Constants

Number of variants.

Required methods

Returns an iterator over the variants.

Variants are yielded in the order they are defined in the enum.

Implementors