[−][src]Derive Macro lain::BinarySerialize
#[derive(BinarySerialize)] { // Attributes available to this derive: #[lain] }
Implements lain::traits::BinarySerialize on the given struct/enum.
The byteorder of fields can be overridden with #[byteorder(big)]
or
#[byteorder(little)]
Example
ⓘThis example deliberately fails to compile
extern crate lain; use lain::{BinarySerialize, hexdump}; use std::io::BufWriter; #[derive(BinarySerialize)] struct LittleEndianStruct { little_endian_field: u32, } #[derive(BinarySerialize)] struct MyStruct { field1: u32, #[byteorder(little)] field2: LittleEndianStruct, } fn serialize_struct() { let s = MyStruct { field1: 0xAABBCCDD, field2: AlwaysLittleEndianStruct { little_endian_field: 0x00112233, }, }; let mut serialized_buffer = [0u8; std::mem::size_of::<MyStruct>()]; { let buffer_ref: &mut [u8] = &mut serialized_buffer; let mut writer = BufWriter::new(buffer_ref); s.binary_serialize::<_, lain::byteorder::BigEndian>(&mut writer); } println!("{}", &hexdump(serialized_buffer.iter())); // Output: // ------00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F // 0000: AA BB CC DD 33 22 11 00 }