[−][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 $(- $sub_li:literal)* $(- $li_sub_id:ident)* $(- (enum $type0:ty) $li_sub_sid:ident )*)? $($id:ident $(- $sub_id:ident)* $(- $id_sub_li:literal)* $(- (enum $type1:ty) $id_sub_sid:ident )*)? $((enum $type2:ty) $($sid0:ident)? $(- $sid1:ident)* $(- $($sid_sub_li:literal)* )* )* $((-$id1:ident))? $(| $bitor_li:literal)* $(+ $add_li:literal)* $(& $bitand_li:literal)* $(^ $bitxor_li:literal)* $(/ $div_li:literal)* $(* $mul_li:literal)* $(<< $shl_li:literal)* $(>> $shr_li:literal)* $(| $bitor_id:ident)* $(+ $add_id:ident)* $(& $bitand_id:ident)* $(^ $bitxor_id:ident )* $(/ $div_id:ident )* $(* $mul_id:ident )* $(<< $shl_id:ident )* $(>> $shr_id:ident )* $(| (enum $bitor_type_sid:ty) $bitor_sid:ident )* $(+ (enum $add_type_sid:ty) $add_sid:ident )* $(& (enum $bitand_type_sid:ty) $bitand_sid:ident )* $(^ (enum $bitxor_type_sid:ty) $bitxor_sid:ident )* $(/ (enum $div_type_sid:ty) $div_sid:ident )* $(* (enum $mul_type_sid:ty) $mul_sid:ident )* $(<< (enum $shl_type_sid:ty) $shl_sid:ident )* $(>> (enum $shr_type_sid:ty) $shr_sid:ident )* ,$(#[$comment:meta])* )+ } )+ ) => { ... }; ( $( $(#[$outer_comment:meta])* $outer_vis:vis enum $name:ident { $( $val_name:ident = $($li:literal $(- $sub_li:literal)* $(- $li_sub_id:ident)* $(- (enum $type0:ty) $li_sub_sid:ident )*)? $($id:ident $(- $sub_id:ident)* $(- $id_sub_li:literal)* $(- (enum $type1:ty) $id_sub_sid:ident )*)? $((enum $type2:ty) $($sid0:ident)? $(- $sid1:ident)* $(- $($sid_sub_li:literal)* )* )* $((-$id1:ident))? $(| $bitor_li:literal)* $(+ $add_li:literal)* $(& $bitand_li:literal)* $(^ $bitxor_li:literal)* $(/ $div_li:literal)* $(* $mul_li:literal)* $(<< $shl_li:literal)* $(>> $shr_li:literal)* $(| $bitor_id:ident)* $(+ $add_id:ident)* $(& $bitand_id:ident)* $(^ $bitxor_id:ident )* $(/ $div_id:ident )* $(* $mul_id:ident )* $(<< $shl_id:ident )* $(>> $shr_id:ident )* $(| (enum $bitor_type_sid:ty) $bitor_sid:ident )* $(+ (enum $add_type_sid:ty) $add_sid:ident )* $(& (enum $bitand_type_sid:ty) $bitand_sid:ident )* $(^ (enum $bitxor_type_sid:ty) $bitxor_sid:ident )* $(/ (enum $div_type_sid:ty) $div_sid:ident )* $(* (enum $mul_type_sid:ty) $mul_sid:ident )* $(<< (enum $shl_type_sid:ty) $shl_sid:ident )* $(>> (enum $shr_type_sid:ty) $shr_sid:ident )* ,$(#[$comment:meta])* )+ } )+ ) => { ... }; ( $(#[$outermost_comment:meta])* $whole_vis:vis mod $namespace:ident { $( $(#[$outer_comment:meta])* $outer_vis:vis enum $name:ident { $($val_name:ident,$(#[$comment:meta])*)+ } )+ } ) => { ... }; ( $(#[$outermost_comment:meta])* $whole_vis:vis mod $namespace:ident { $( $(#[$outer_comment:meta])* $outer_vis:vis enum $name:ident : $inner_vis:vis $type:ty{ $($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.raw); }