Skip to main content

bitflags/
example_generated.rs

1//! This module shows an example of code generated by the macro. **IT MUST NOT BE USED OUTSIDE THIS
2//! CRATE**.
3//!
4//! Usually, when you call the `bitflags!` macro, only the `Flags` type would be visible. In this
5//! example, the `Field0`, `Iter`, and `IterRaw` types are also exposed so that you can explore
6//! their APIs. The `Field0` type can be accessed as `self.0` on an instance of `Flags`.
7
8__declare_public_bitflags! {
9    /// This is the same `Flags` struct defined in the [crate level example](../index.html#example).
10    /// Note that this struct is just for documentation purposes only, it must not be used outside
11    /// this crate.
12    pub struct Flags
13}
14
15__declare_internal_bitflags! {
16    pub struct Field0: u32
17}
18
19__impl_internal_bitflags! {
20    Field0: u32, Flags {
21        /// Field `A`.
22        ///
23        /// This flag has the value `0b00000001`.
24        const A = 0b00000001;
25        /// Field `B`.
26        ///
27        /// This flag has the value `0b00000010`.
28        const B = 0b00000010;
29        /// Field `C`.
30        ///
31        /// This flag has the value `0b00000100`.
32        const C = 0b00000100;
33        const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits();
34    }
35}
36
37__impl_public_bitflags_forward! {
38    Flags: u32, Field0
39}
40
41__impl_public_bitflags_ops! {
42    Flags
43}
44
45__impl_public_bitflags_iter! {
46    Flags: u32, Flags
47}
48
49__impl_public_bitflags_consts! {
50    Flags: u32 {
51        /// Field `A`.
52        ///
53        /// This flag has the value `0b00000001`.
54        const A = 0b00000001;
55        /// Field `B`.
56        ///
57        /// This flag has the value `0b00000010`.
58        const B = 0b00000010;
59        /// Field `C`.
60        ///
61        /// This flag has the value `0b00000100`.
62        const C = 0b00000100;
63        const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits();
64    }
65}