Macro bitmask::bitmask
[−]
[src]
macro_rules! bitmask { ( $(#[$st_attr: meta])* mask $st_name: ident : $T: tt where $(#[$en_attr: meta])* flags $en_name: ident { $($token: tt)+ } ) => { ... }; ( st_meta: [ $(#[$st_attr: meta])* ], st_name: $st_name: ident, mask_type: $T: tt, en_meta: [ $(#[$en_attr: meta])* ], en_name: $en_name: ident, flags: [ $( meta: [ $(#[$flag_attr: meta])* ] flag: $flag_name: ident = $flag_value: expr; )* [ $(#[$prev_attr: meta])* ] ], #[$next_attr: meta] $($token: tt)* ) => { ... }; ( st_meta: [ $(#[$st_attr: meta])* ], st_name: $st_name: ident, mask_type: $T: tt, en_meta: [ $(#[$en_attr: meta])* ], en_name: $en_name: ident, flags: [ $( meta: [ $(#[$flag_attr: meta])* ] flag: $flag_name: ident = $flag_value: expr; )* [ $(#[$next_attr: meta])* ] ], $next_name: ident = $next_value: expr, $($token: tt)* ) => { ... }; ( st_meta: [ $(#[$st_attr: meta])* ], st_name: $st_name: ident, mask_type: $T: tt, en_meta: [ $(#[$en_attr: meta])* ], en_name: $en_name: ident, flags: [ $( meta: [ $(#[$flag_attr: meta])* ] flag: $flag_name: ident = $flag_value: expr; )* [ $(#[$next_attr: meta])* ] ], $next_name: ident = $next_value: expr ) => { ... }; ( st_meta: [ $(#[$st_attr: meta])* ], st_name: $st_name: ident, mask_type: $T: tt, en_meta: [ $(#[$en_attr: meta])* ], en_name: $en_name: ident, flags: [ $( meta: [ $(#[$flag_attr: meta])* ] flag: $flag_name: ident = $flag_value: expr; )+ [] ], ) => { ... }; ( $(#[$st_attr: meta])* pub mask $st_name: ident : $T: tt where $(#[$en_attr: meta])* flags $en_name: ident { $($token: tt)+ } ) => { ... }; ( pub st_meta: [ $(#[$st_attr: meta])* ], st_name: $st_name: ident, mask_type: $T: tt, en_meta: [ $(#[$en_attr: meta])* ], en_name: $en_name: ident, flags: [ $( meta: [ $(#[$flag_attr: meta])* ] flag: $flag_name: ident = $flag_value: expr; )* [ $(#[$prev_attr: meta])* ] ], #[$next_attr: meta] $($token: tt)* ) => { ... }; ( pub st_meta: [ $(#[$st_attr: meta])* ], st_name: $st_name: ident, mask_type: $T: tt, en_meta: [ $(#[$en_attr: meta])* ], en_name: $en_name: ident, flags: [ $( meta: [ $(#[$flag_attr: meta])* ] flag: $flag_name: ident = $flag_value: expr; )* [ $(#[$next_attr: meta])* ] ], $next_name: ident = $next_value: expr, $($token: tt)* ) => { ... }; ( pub st_meta: [ $(#[$st_attr: meta])* ], st_name: $st_name: ident, mask_type: $T: tt, en_meta: [ $(#[$en_attr: meta])* ], en_name: $en_name: ident, flags: [ $( meta: [ $(#[$flag_attr: meta])* ] flag: $flag_name: ident = $flag_value: expr; )* [ $(#[$next_attr: meta])* ] ], $next_name: ident = $next_value: expr ) => { ... }; ( pub st_meta: [ $(#[$st_attr: meta])* ], st_name: $st_name: ident, mask_type: $T: tt, en_meta: [ $(#[$en_attr: meta])* ], en_name: $en_name: ident, flags: [ $( meta: [ $(#[$flag_attr: meta])* ] flag: $flag_name: ident = $flag_value: expr; )+ [] ], ) => { ... }; (@IMPL $st_name: ident $T: tt $en_name: ident, { $($flag_name: ident = $flag_val: expr),+ }) => { ... }; (@IMPL_BITOR $($target: ty, $other: ty, $st_name: ident);*;) => { ... }; (@IMPL_BITAND $($target: ty, $other: ty, $st_name: ident);*;) => { ... }; (@IMPL_BITXOR $($target: ty, $other: ty, $st_name: ident);*;) => { ... }; (@IMPL_BITOR_ASSIGN $($target: ty, $other: ty);*;) => { ... }; (@IMPL_BITAND_ASSIGN $($target: ty, $other: ty);*;) => { ... }; (@IMPL_BITXOR_ASSIGN $($target: ty, $other: ty);*;) => { ... }; (@IMPL_NOT $($target: ty, $st_name: ident);*;) => { ... }; }
The macro that generates a bitmask and it's associated bit flags.
See the crate level docs for more info and examples.
Methods
none
- Create a new mask with all flags unset.all
- Create a new mask with all flags set.set
- Set a single flag if enum flag variant is passed or multiple if mask is passed.unset
- Unset a single flag if enum flag variant is passed or multiple if mask is passed.toggle
- Same as set/unset but always negates the flags (1 -> 0 and 0 -> 1).contains
- Check if the mask contains a flag or a whole mask.intersects
- Check if the mask intersects with a flag or a whole mask.is_all
- Check if all flag variants are set.is_none
- Check if all flag variants are unset.
Operators
BitOr
BitXor
BitAnd
BitOrAssign
BitXorAssign
BitAndAssign
Not
- Same as toggle but creates a new mask with the resulting value.
Misc
From
< enum > for structDeref
for structDeref
for enum