Trait Flags
trait Flags: Sized + 'static
A set of defined flags using a bits type as storage.
Implementing Flags
This trait is implemented by the bitflags macro:
use bitflags;
bitflags!
It can also be implemented manually:
use ;
;
Using Flags
The Flags trait can be used generically to work with any flags types. In this example,
we can count the number of defined named flags:
# use ;
bitflags!
assert_eq!;
Associated Types
type Bits: TraitBound { trait_: Path { path: "Bits", id: Id(206), args: None }, generic_params: [], modifier: None }The underlying bits type.
Required Methods
fn bits(self: &Self) -> <Self as >::BitsGet the underlying bits value.
The returned value is exactly the bits set in this flags value.
fn from_bits_retain(bits: <Self as >::Bits) -> SelfConvert from a bits value exactly.
Provided Methods
fn empty() -> SelfGet a flags value with all bits unset.
fn all() -> SelfGet a flags value with all known bits set.
fn contains_unknown_bits(self: &Self) -> boolThis method will return
trueif any unknown bits are set.fn from_bits(bits: <Self as >::Bits) -> Option<Self>Convert from a bits value.
This method will return
Noneif any unknown bits are set.fn from_bits_truncate(bits: <Self as >::Bits) -> SelfConvert from a bits value, unsetting any unknown bits.
fn from_name(name: &str) -> Option<Self>Get a flags value with the bits of a flag with the given name set.
This method will return
Noneifnameis empty or doesn't correspond to any named flag.fn iter(self: &Self) -> Iter<Self>Yield a set of contained flags values.
Each yielded flags value will correspond to a defined named flag. Any unknown bits will be yielded together as a final flags value.
fn iter_names(self: &Self) -> IterNames<Self>Yield a set of contained named flags values.
This method is like
Flags::iter, except only yields bits in contained named flags. Any unknown bits, or bits not corresponding to a contained flag will not be yielded.fn is_empty(self: &Self) -> boolWhether all bits in this flags value are unset.
fn is_all(self: &Self) -> boolWhether all known bits in this flags value are set.
fn intersects(self: &Self, other: Self) -> bool where Self: SizedWhether any set bits in a source flags value are also set in a target flags value.
fn contains(self: &Self, other: Self) -> bool where Self: SizedWhether all set bits in a source flags value are also set in a target flags value.
fn truncate(self: &mut Self) where Self: SizedRemove any unknown bits from the flags.
fn insert(self: &mut Self, other: Self) where Self: SizedThe bitwise or (
|) of the bits in two flags values.fn remove(self: &mut Self, other: Self) where Self: SizedThe intersection of a source flags value with the complement of a target flags value (
&!).This method is not equivalent to
self & !otherwhenotherhas unknown bits set.removewon't truncateother, but the!operator will.fn toggle(self: &mut Self, other: Self) where Self: SizedThe bitwise exclusive-or (
^) of the bits in two flags values.fn set(self: &mut Self, other: Self, value: bool) where Self: SizedCall
Flags::insertwhenvalueistrueorFlags::removewhenvalueisfalse.fn clear(self: &mut Self) where Self: SizedUnsets all bits in the flags.
fn intersection(self: Self, other: Self) -> SelfThe bitwise and (
&) of the bits in two flags values.fn union(self: Self, other: Self) -> SelfThe bitwise or (
|) of the bits in two flags values.fn difference(self: Self, other: Self) -> SelfThe intersection of a source flags value with the complement of a target flags value (
&!).This method is not equivalent to
self & !otherwhenotherhas unknown bits set.differencewon't truncateother, but the!operator will.fn symmetric_difference(self: Self, other: Self) -> SelfThe bitwise exclusive-or (
^) of the bits in two flags values.fn complement(self: Self) -> SelfThe bitwise negation (
!) of the bits in a flags value, truncating the result.