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 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]

GenericArrayIter

An iterator that moves out of a GenericArray

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.

Derive Macros

ByteStruct

Derives trait ByteStruct for a data structure.

ByteStructBE

Same effect as #[derive(ByteStruct)] #[byte_struct_be]

ByteStructLE

Same effect as #[derive(ByteStruct)] #[byte_struct_le]