Macro enum_map::enum_map

source ·
macro_rules! enum_map {
    {$($t:tt)*} => { ... };
}
Expand description

Enum map constructor.

This macro allows to create a new enum map in a type safe way. It takes a list of , separated pairs separated by =>. Left side is | separated list of enum keys, or _ to match all unmatched enum keys, while right side is a value.

The iteration order when using this macro is not guaranteed to be consistent. Future releases of this crate may change it, and this is not considered to be a breaking change.

Examples

use enum_map::{enum_map, Enum};

#[derive(Enum)]
enum Example {
    A,
    B,
    C,
    D,
}

let enum_map = enum_map! {
    Example::A | Example::B => 1,
    Example::C => 2,
    _ => 3,
};
assert_eq!(enum_map[Example::A], 1);
assert_eq!(enum_map[Example::B], 1);
assert_eq!(enum_map[Example::C], 2);
assert_eq!(enum_map[Example::D], 3);