#enums #map #array #key #key-value #safe

no-std enum-map

A map with C-like enum keys represented internally as an array

78 releases (21 stable)

3.0.0-beta.2 Nov 8, 2023
3.0.0-0.gat.0 Sep 23, 2023
2.7.3 Nov 24, 2023
2.6.0 Jun 30, 2023
0.2.9 Jul 26, 2017

#23 in Data structures

Download history 67992/week @ 2023-12-08 69385/week @ 2023-12-15 40935/week @ 2023-12-22 51820/week @ 2023-12-29 65138/week @ 2024-01-05 68050/week @ 2024-01-12 80230/week @ 2024-01-19 70414/week @ 2024-01-26 74529/week @ 2024-02-02 107205/week @ 2024-02-09 83066/week @ 2024-02-16 95783/week @ 2024-02-23 97160/week @ 2024-03-01 107144/week @ 2024-03-08 105307/week @ 2024-03-15 93441/week @ 2024-03-22

422,243 downloads per month
Used in 494 crates (78 directly)

MIT/Apache

40KB
740 lines

enum-map

A library providing enum map providing type safe enum array. It is implemented using regular Rust arrays, so using them is as fast as using regular Rust arrays.

This crate follows the "N minus two" MSRV policy. This means that it supports the current Rust release, as well as the two before that.

Examples

#[macro_use]
extern crate enum_map;

use enum_map::EnumMap;

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

fn main() {
    let mut map = enum_map! {
        Example::A => 1,
        Example::B => 2,
        Example::C => 3,
    };
    map[Example::C] = 4;

    assert_eq!(map[Example::A], 1);

    for (key, &value) in &map {
        println!("{:?} has {} as value.", key, value);
    }
}

lib.rs:

An enum mapping type.

It is implemented using an array type, so using it is as fast as using Rust arrays.

Examples

use enum_map::{enum_map, Enum, EnumMap};

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

let mut map = enum_map! {
    Example::A(false) => 0,
    Example::A(true) => 1,
    Example::B => 2,
    Example::C => 3,
};
map[Example::C] = 4;

assert_eq!(map[Example::A(true)], 1);

for (key, &value) in &map {
    println!("{:?} has {} as value.", key, value);
}

Dependencies

~200KB