Expand description
cenum_utils provides a minimal set of traits and (optionally) derive macros providing const access to certain enum properties.
Currently this includes:
- EnumCount — Variant counts.
- EnumDiscriminants — Variant discriminants.
Unfortunately, due to rust’s currently lack of const trait support, actually interacting with some of the features this crate provides in const contexts can be somewhat difficult.
§Example
use cenum_utils::{ConstEnum, EnumCount as _, EnumDiscriminants as _};
#[derive(ConstEnum)]
#[repr(u8)]
enum Enum {
X,
Y,
Z
}
const fn test() {
assert!(Enum::COUNT == 3);
let mut i = 0;
while i < Enum::DISCRIMINANTS.len() {
assert!(Enum::DISCRIMINANTS[i] as usize == i);
i += 1;
}
}§Features
derive(enabled by default) — Derive macros for the core traits provided by this crate.
Traits§
- Enum
Count - A trait providing access to the number of enum variants a type contains.
- Enum
Discriminants - A trait providing access to the discriminants of an enum’s variants.
Derive Macros§
- Const
Enum derive - Derives
EnumCount, andEnumDiscriminantsif the enum has a valid primitivereprtype.