[][src]Function abomonation::encode

pub unsafe fn encode<T: Abomonation, W: Write>(
    typed: &T,
    write: &mut W
) -> IOResult<()>

Encodes a typed reference into a binary buffer.


This method is unsafe because it is unsafe to transmute typed allocations to binary. Furthermore, Rust currently indicates that it is undefined behavior to observe padding bytes, which will happen when we memmcpy structs which contain padding bytes.


use abomonation::{encode, decode};

// create some test data out of abomonation-approved types
let vector = (0..256u64).map(|i| (i, format!("{}", i)))

// encode a Vec<(u64, String)> into a Vec<u8>
let mut bytes = Vec::new();
unsafe { encode(&vector, &mut bytes); }

// decode a &Vec<(u64, String)> from &mut [u8] binary data
if let Some((result, remaining)) = unsafe { decode::<Vec<(u64, String)>>(&mut bytes) } {
    assert!(result == &vector);
    assert!(remaining.len() == 0);