Skip to content

jonathan-a-thomason/encap_enum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

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

Resources

License

Stars

Watchers

Forks

Languages