Iterate over the variants of an enum


Sometimes we need to go over all the variants of an enum and do something for each one of them.


examples/enums/list-variants/Cargo.toml
[package]
name = "list-variants"
version = "0.1.0"
edition = "2021"

[dependencies]
strum = "0.26.3"
strum_macros = "0.26.4"

examples/enums/list-variants/src/main.rs
use strum::IntoEnumIterator;
use strum_macros::EnumIter;

#[derive(EnumIter, Debug, PartialEq)]
enum Animal {
    Cat,
    Dog,
    Snake,
    Camel,
    Crab,
}

fn main() {
    for animal in Animal::iter() {
        println!("{animal:?}");
    }
}

Cat
Dog
Snake
Camel
Crab