Function ser_to_buf_ordered

Source
pub fn ser_to_buf_ordered<T>(
    buf: &mut [u8],
    value: &T,
    order: Order,
) -> Result<usize>
where T: ?Sized + Serialize,
Expand description

Serialize value into pre-allocated byte buffer.

Buffer is supposed to be large enough to hold serialized data. You can use calc_size() to get exact size of required buffer before serialization.

Returns the actual size of serialized data.

Example


#[derive(serde_derive::Serialize)]
struct Foo(u16, String);
let foo = Foo(1, "abc".to_string());

assert_eq!(calc_size_asc(&foo).unwrap(), 6);
let mut buf = [0_u8; 100];  // actually, need 6 bytes for this, but can use larger buffer
assert_eq!(ser_to_buf_ordered(&mut buf, &foo, Order::Ascending).unwrap(), 6);
assert_eq!(&buf[2..5], b"abc");
assert_eq!(buf[5], 7); // last byte is string length (3) in varint encoding