Crate binwrite

Source
Expand description

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.