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

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§

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 ActiveState

Source§

impl IntoEnumIterator for AfterTouchKind

Source§

impl IntoEnumIterator for DialKind

Source§

impl IntoEnumIterator for FaderKind

Source§

impl IntoEnumIterator for KeyModifier

Source§

impl IntoEnumIterator for MidiChannel

Source§

impl IntoEnumIterator for MidiClock

Source§

impl IntoEnumIterator for NoteDisplay

Source§

impl IntoEnumIterator for PadColor

Source§

impl IntoEnumIterator for PadCurve

Source§

impl IntoEnumIterator for PadKind

Source§

impl IntoEnumIterator for PresetSlot

Source§

impl IntoEnumIterator for SwingKind

Source§

impl IntoEnumIterator for SwitchKind

Source§

impl IntoEnumIterator for TapAverage

Source§

impl IntoEnumIterator for TimeDivision

Source§

impl IntoEnumIterator for TransportKind

Source§

impl IntoEnumIterator for TriggerKind

Source§

impl IntoEnumIterator for UsbChannel

Source§

impl IntoEnumIterator for Octave

Source§

impl IntoEnumIterator for SequenceDirection

Source§

impl IntoEnumIterator for ChordVoicing

Source§

impl IntoEnumIterator for PitchClass

Source§

impl IntoEnumIterator for ScaleKind