#ordinal #map #enums #integer #set #traits-structs

macro ordinal-map-derive

Ordinal trait to map values to integers and efficient maps and sets for such types

7 releases

0.1.6 Jun 24, 2024
0.1.5 Jun 24, 2024

#16 in #ordinal


Used in ordinal-map

MIT license

19KB
448 lines

Ordinal types and collections

The library provides Ordinal trait to map types to usize values, proc-macro to derive Ordinal trait for structs and enums, and map and set implementations that use these types as keys efficiently.

Example

use ordinal_map::map::total::OrdinalTotalMap;
#[derive(ordinal_map::Ordinal)]
enum ErrorCategory {
    Network,
    Disk,
    Logic,
}

fn classify_error(error: &str) -> ErrorCategory {
    // ...
}

let mut error_counts: OrdinalTotalMap<ErrorCategory, u64> = OrdinalTotalMap::default();

for error in &errors {
    let category = classify_error(error);
    error_counts[category] += 1;
}

lib.rs:

Procedural macros for ordinal-map crate.

This crate does not have a public API, everything is re-exported from ordinal-map crate.

Dependencies

~255–700KB
~17K SLoC