| use zerocopy_derive::*; | |
| // The only valid value of this type are the bytes `0xC0C0`. | |
| #[derive(TryFromBytes, KnownLayout, Immutable)] | |
| #[repr(u16)] | |
| pub enum C0C0 { | |
| _XC0C0 = 0xC0C0, | |
| } | |
| #[derive(FromBytes, KnownLayout, Immutable, SplitAt)] | |
| #[repr(C, align(4))] | |
| pub struct Packet<Magic> { | |
| magic_number: Magic, | |
| milk: u8, | |
| mug_size: u8, | |
| temperature: [u8; 5], | |
| marshmallows: [[u8; 3]], | |
| } | |
| /// A packet begining with the magic number `0xC0C0`. | |
| pub type CocoPacket = Packet<C0C0>; | |
| /// A packet beginning with any two initialized bytes. | |
| pub type LocoPacket = Packet<[u8; 2]>; |