#enums #macro-use #macro-for-building #automatic #macro-attributes #enum-flags

macro auto-enum

Provides attribute macros for building enums which are convenient for use with FFI, along with "enum" flags

4 releases

Uses old Rust 2015

0.2.0-alpha1 Nov 25, 2018
0.1.2 Oct 27, 2018
0.1.1 Oct 27, 2018
0.1.0 Oct 26, 2018

#18 in #macro-for-building

Download history 133/week @ 2025-12-04 109/week @ 2025-12-11 150/week @ 2025-12-18 171/week @ 2025-12-25 216/week @ 2026-01-01 146/week @ 2026-01-08 166/week @ 2026-01-15 144/week @ 2026-01-22 147/week @ 2026-01-29 119/week @ 2026-02-05 130/week @ 2026-02-12 164/week @ 2026-02-19 149/week @ 2026-02-26 153/week @ 2026-03-05 166/week @ 2026-03-12 138/week @ 2026-03-19

631 downloads per month
Used in 4 crates (3 directly)

MIT license

32KB
739 lines

Provides automatic enum implementations that are convenient for working with FFI

#[macro_use]
extern crate auto_enum;
extern crate checked_enum;

#[auto_enum(u32, checked)]
pub enum SweepDirection {
    CounterClockwise = 0,
    Clockwise = 1,
}

assert_eq!(SweepDirection::from_u32(0), Some(SweepDirection::CounterClockwise));
#[macro_use]
extern crate auto_enum;

#[enum_flags(u32)]
pub enum BitmapOptions {
    TARGET = 0x1,
    CANNOT_DRAW = 0x2,
    CPU_READ = 0x4,
    GDI_COMPATIBLE = 0x8,
}

let flags = BitmapOptions::TARGET | BitmapOptions::GDI_COMPATIBLE;
assert!(flags.is_set(BitmapOptions::TARGET));
assert!(!flags.is_set(BitmapOptions::CPU_READ));

Dependencies

~2MB
~49K SLoC