[−][src]Function ordcode::ser_to_buf_ordered
pub fn ser_to_buf_ordered<T: ?Sized>(
buf: &mut [u8],
value: &T,
order: Order
) -> Result<usize> where
T: Serialize,
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