[][src]Crate binwrite

A Rust crate for helping write structs as binary data using ✨macro magic✨

Example:

 use binwrite::BinWrite;

 #[derive(BinWrite)]
 #[binwrite(little)]
 struct Rect {
     x: i32,
     y: i32,
     #[binwrite(big)]
     size: (u16, u16),
 }

 fn main() {
     let rects = vec![
         Rect { x: 1, y: -2, size: (3, 4) },
         Rect { x: 20, y: 4, size: (5, 7) }
     ];
     let mut bytes = vec![];
     rects.write(&mut bytes).unwrap();
     assert_eq!(
         bytes,
         vec![
         //  [  x (little endian) ]  [  y (little endian) ]  [ size.0 ]  [ size.1 ]
             0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0x00, 0x04,
             0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07,
         ]
     );
 }

Modules

write_track

Module for WriteTrack<T>

writers

Built-in special writers (example: C strings)

Macros

writer_option_new

Macro for creating a new writer option, with the idea being a non-verbose means of providing a forwards-compatible set of options which uses default values for all provided options.

Structs

WriterOption

Options on how to write. Use writer_option_new! to create a new instance. Manual initialization is not possible to prevent forward compatibility issues.

Enums

Endian

An enum to represent what endianness to write with

Traits

BinWrite

A trait providing the ability to write the struct to a writer

Derive Macros

BinWrite

Derive macro for BinWrite. Usage here.