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 }
66