| //! This module shows an example of code generated by the macro. **IT MUST NOT BE USED OUTSIDE THIS |
| //! CRATE**. |
| //! |
| //! Usually, when you call the `bitflags!` macro, only the `Flags` type would be visible. In this |
| //! example, the `Field0`, `Iter`, and `IterRaw` types are also exposed so that you can explore |
| //! their APIs. The `Field0` type can be accessed as `self.0` on an instance of `Flags`. |
| |
| __declare_public_bitflags! { |
| /// This is the same `Flags` struct defined in the [crate level example](../index.html#example). |
| /// Note that this struct is just for documentation purposes only, it must not be used outside |
| /// this crate. |
| pub struct Flags; |
| } |
| |
| __declare_internal_bitflags! { |
| pub struct Field0: u32; |
| pub struct Iter; |
| pub struct IterRaw; |
| } |
| |
| __impl_internal_bitflags! { |
| Field0: u32, Flags, Iter, IterRaw { |
| A; |
| B; |
| C; |
| ABC; |
| } |
| } |
| |
| __impl_public_bitflags! { |
| Flags: u32, Field0, Iter, IterRaw; |
| } |
| |
| __impl_public_bitflags_consts! { |
| Flags { |
| /// Field `A`. |
| /// |
| /// This flag has the value `0b00000001`. |
| A = 0b00000001; |
| /// Field `B`. |
| /// |
| /// This flag has the value `0b00000010`. |
| B = 0b00000010; |
| /// Field `C`. |
| /// |
| /// This flag has the value `0b00000100`. |
| C = 0b00000100; |
| ABC = Self::A.bits() | Self::B.bits() | Self::C.bits(); |
| } |
| } |