#bit-flags #enums #flags #bitmask #bit

no-std encap_enum

A non-verbose way to define a group of constants and bit flags

2 releases

0.3.1 Jul 13, 2020
0.3.0 Jul 13, 2020
0.2.1 Jul 11, 2020
0.1.5 Jun 19, 2020

#197 in No standard library

27 downloads per month

MIT license

32KB
572 lines

Encap_Enum

Rust

Encap_Enum provides the encap_enum! macro for defining enumerations, bitflags and groups of constants.

Usage

Add this to your Cargo.toml:

[dependencies]
encap_enum = "0.3.1"

and this to your crate root:

#[macro_use]
extern crate encap_enum;

Features

  • iterators.
  • bit flags.
  • encapsulated flag values.
    • change enum visibility for both internal values and the enum itself.
  • supports any number of attributes.
    • This includes doc comments, #[repr(C)], #[derive], and many others.
  • No std dependency.
  • FFI compatible.

Example

encap_enum!{
    /// ClassStyle is a structure used in the Window class.
    #[repr(C)]
    pub enum ClassStyle: pub u32 {
        ByteAlignClient     = 0x0000_1000,
        ByteAlignWindow     = 0x0000_2000, /// Aligns window on a byte boundary.
        DoubleClicks        = 0x0000_0008,
        DropShadow          = 0x0002_0000,
        GlobalClass         = 0x0000_4000,
        // ...
    }
}
fn main() {
    println!("ByteAlignClient integer representation: {}", ClassStyle::ByteAlignClient.raw);
    println!("ByteAlignClient debug representation: {:?}", ClassStyle::ByteAlignClient);
}

License

encap_enum is licenced under the MIT Licence.

Recent Changes
  • fixed incorrect documentation.

No runtime deps