• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //! An example of implementing the `BitFlags` trait manually for a flags type.
2 
3 use std::str;
4 
5 use bitflags::bitflags;
6 
7 // Define a flags type outside of the `bitflags` macro as a newtype
8 // It can accept custom derives for libraries `bitflags` doesn't support natively
9 #[derive(zerocopy::IntoBytes, zerocopy::FromBytes, zerocopy::KnownLayout, zerocopy::Immutable)]
10 #[repr(transparent)]
11 pub struct ManualFlags(u32);
12 
13 // Next: use `impl Flags` instead of `struct Flags`
14 bitflags! {
15     impl ManualFlags: u32 {
16         const A = 0b00000001;
17         const B = 0b00000010;
18         const C = 0b00000100;
19         const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits();
20     }
21 }
22 
main()23 fn main() {}
24