encap_enum

Crates.ioencap_enum
lib.rsencap_enum
version0.3.1
sourcesrc
created_at2020-06-17 06:08:23.954504
updated_at2020-07-13 01:17:05.969704
descriptionA non-verbose way to define a group of constants and bit flags.
homepagehttps://github.com/Razordor/encap_enum
repositoryhttps://github.com/Razordor/encap_enum
max_upload_size
id254835
size32,479
Jonathan Thomason (jonathan-a-thomason)

documentation

https://docs.rs/encap_enum

README

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.
Commit count: 30

cargo fmt