[][src]Macro encap_enum::encap_enum

macro_rules! encap_enum {
    (
        $(#[$outer_comment:meta])*
        $outer_vis:vis enum $name:ident : $inner_vis:vis $type:ty {
            $(
                $val_name:ident =
                    $(   $li:literal       )?  $(   $id:ident       )?
                    $(|  $bitor_li:literal )*  $(|  $bitor_id:ident )*
                    $(+  $add_li:literal   )*  $(+  $add_id:ident   )*
                    $(&  $bitand_li:literal)*  $(&  $bitand_id:ident)*
                    $(^  $bitxor_li:literal)*  $(^  $bitxor_id:ident)*
                    $(/  $div_li:literal   )*  $(/  $div_id:ident   )*
                    $(*  $mul_li:literal   )*  $(*  $mul_id:ident   )*
                    $(<< $shl_li:literal   )*  $(<< $shl_id:ident   )*
                    $(>> $shr_li:literal   )*  $(>> $shr_id:ident   )*
                    $(-  $sub_li:literal   )*  $(-  $sub_id:ident   )*
                ,$(#[$comment:meta])*
            )+
        }
    ) => { ... };
    (
        $(#[$outer_comment:meta])*
        $outer_vis:vis enum $name:ident {
            $(
                $val_name:ident =
                    $(   $li:literal       )?  $(   $id:ident       )?
                    $(|  $bitor_li:literal )*  $(|  $bitor_id:ident )*
                    $(+  $add_li:literal   )*  $(+  $add_id:ident   )*
                    $(&  $bitand_li:literal)*  $(&  $bitand_id:ident)*
                    $(^  $bitxor_li:literal)*  $(^  $bitxor_id:ident)*
                    $(/  $div_li:literal   )*  $(/  $div_id:ident   )*
                    $(*  $mul_li:literal   )*  $(*  $mul_id:ident   )*
                    $(<< $shl_li:literal   )*  $(<< $shl_id:ident   )*
                    $(>> $shr_li:literal   )*  $(>> $shr_id:ident   )*
                    $(-  $sub_li:literal   )*  $(-  $sub_id:ident   )*
                ,$(#[$comment:meta])*
            )+
        }
    ) => { ... };
    (
        $(#[$outer_comment:meta])*
        $outer_vis:vis enum $name:ident {
            $($val_name:ident,$(#[$comment:meta])*)+
        }
    ) => { ... };
    (
        $(#[$outer_comment:meta])*
        $outer_vis:vis enum $name:ident : $inner_vis:vis $type:ty{
            $($val_name:ident,$(#[$comment:meta])*)+
        }
    ) => { ... };
}

A macro for bit flags and enumerations.

See crate level docs for full documentation.

Example

#[macro_use]
extern crate encap_enum;

encap_enum!{
    enum Flags{
        A = 0x00,
        B = 0x01,
        C = 0x02,
    }
}

fn main() {
    println!("A = {}", Flags::A.0);
}