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()23fn main() {} 24