[][src]Crate byte_struct

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);
}

Re-exports

pub use byte_struct_derive::ByteStruct;
pub use byte_struct_derive::ByteStructBE;
pub use byte_struct_derive::ByteStructLE;

Modules

arr

Implementation for arr! macro.

functional

Functional programming with generic sequences

iter

GenericArray iterator implementation.

sequence

Useful traits for manipulating sequences of data stored in GenericArrays

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: let test = arr![u32; 1, 2, 3];

bitfields

Generates a structure that implements ByteStructUnspecifiedByteOrder with bit field semantics.

Structs

GenericArray

Struct representing a generic array - GenericArray<T, N> works like [T; N]

Traits

ArrayLength

Trait making GenericArray work, marking types to be used as length of an array

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.