Skip to main content

IntoEnumIterator

Trait IntoEnumIterator 

Source
pub trait IntoEnumIterator: Sized {
    type Iterator: Iterator<Item = Self> + Clone + DoubleEndedIterator + ExactSizeIterator + FusedIterator;

    // Required method
    fn iter() -> Self::Iterator;
}
Expand description

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§

Required Methods§

Source

fn iter() -> Self::Iterator

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.

Implementors§

Source§

impl IntoEnumIterator for TrackerCalibrationFileType

Source§

impl IntoEnumIterator for DataType

Source§

impl IntoEnumIterator for EventQuality

Source§

impl IntoEnumIterator for EventStatus

Source§

impl IntoEnumIterator for LTBThreshold

Source§

impl IntoEnumIterator for TriggerType

Source§

impl IntoEnumIterator for CRFrameObjectType

Source§

impl IntoEnumIterator for DataSourceKind

Source§

impl IntoEnumIterator for IPBusPacketType

Source§

impl IntoEnumIterator for TelemetryPacketType

Source§

impl IntoEnumIterator for TofPacketType

Source§

impl IntoEnumIterator for FitStatus

Source§

impl IntoEnumIterator for G4ProcessType

Source§

impl IntoEnumIterator for TofCommandCode

Source§

impl IntoEnumIterator for BuildStrategy

Source§

impl IntoEnumIterator for TofOperationMode

Source§

impl IntoEnumIterator for TrackerHitSource