Crate byte_struct[−][src]
Byte Struct
Pack and unpack structure as raw bytes with packed or bit field layout.
Example
use byte_struct::*; bitfields!( #[derive(PartialEq, Debug)] GIFColorTableInfo: u8 { global_color_table_flag: 1, color_resolution: 3, sort_flag: 1, global_color_table_size: 3, } ); #[derive(ByteStruct, PartialEq, Debug)] #[byte_struct_le] struct GIFLogicalScreenDescriptor { width: u16, height: u16, color_table_info: GIFColorTableInfo, background_color_index: u8, pixel_aspect_ratio: u8, } fn example() { assert_eq!(GIFLogicalScreenDescriptor::BYTE_LEN, 7); let raw_descriptor = [0x03, 0x00, 0x05, 0x00, 0xF7, 0x00, 0x00]; let descriptor = GIFLogicalScreenDescriptor::read_bytes(&raw_descriptor[..]); assert_eq!(descriptor, GIFLogicalScreenDescriptor{ width: 3, height: 5, color_table_info: GIFColorTableInfo { global_color_table_flag: 1, color_resolution: 3, sort_flag: 1, global_color_table_size: 7, }, background_color_index: 0, pixel_aspect_ratio: 0, }); let mut raw_another = [0; GIFLogicalScreenDescriptor::BYTE_LEN]; descriptor.write_bytes(&mut raw_another[..]); assert_eq!(raw_descriptor, raw_another); }
Modules
| arr | Implementation for |
| functional | Functional programming with generic sequences |
| iter |
|
| sequence | Useful traits for manipulating sequences of data stored in |
| typenum | This crate provides type-level numbers evaluated at compile time. It depends only on libcore. |
Macros
| arr | Macro allowing for easy generation of Generic Arrays.
Example: |
| bitfields | Generates a structure that implements |
Structs
| GenericArray | Struct representing a generic array - |
| GenericArrayIter | An iterator that moves out of a |
Traits
| ArrayLength | Trait making |
| ByteStruct | A data structure that can be packed into or unpacked from raw bytes. |
| ByteStructLen | A type that can be packed into or unpacked from fixed-size bytes, but the method is unknown yet. |
| ByteStructUnspecifiedByteOrder | A type that can be packed into or unpacked from raw bytes under given default byte order. |
Derive Macros
| ByteStruct | Derives trait |
| ByteStructBE | Same effect as |
| ByteStructLE | Same effect as |