Serialize

Trait Serialize 

Source
pub trait Serialize: SchemaWrite {
    // Provided methods
    fn serialize(src: &Self::Src) -> WriteResult<Vec<u8>> { ... }
    fn serialize_into(dst: &mut impl Writer, src: &Self::Src) -> WriteResult<()> { ... }
    fn serialized_size(src: &Self::Src) -> WriteResult<u64> { ... }
}
Expand description

Helper over SchemaWrite that automatically constructs a writer and serializes a source.

§Examples

Using containers (indirect serialization):

let vec: Vec<u8> = vec![1, 2, 3];
type Src = containers::Vec<u8>;
let bytes = Src::serialize(&vec).unwrap();
let deserialized: Vec<u8> = wincode::deserialize(&bytes).unwrap();
assert_eq!(vec, deserialized);

Using direct serialization (T::Src = T):

let vec: Vec<u8> = vec![1, 2, 3];
let bytes = wincode::serialize(&vec).unwrap();
let deserialized: Vec<u8> = wincode::deserialize(&bytes).unwrap();
assert_eq!(vec, deserialized);

Provided Methods§

Source

fn serialize(src: &Self::Src) -> WriteResult<Vec<u8>>

Available on crate feature alloc only.

Serialize a serializable type into a Vec of bytes.

Source

fn serialize_into(dst: &mut impl Writer, src: &Self::Src) -> WriteResult<()>

Serialize a serializable type into the given byte buffer.

Source

fn serialized_size(src: &Self::Src) -> WriteResult<u64>

Get the size in bytes of the type when serialized.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<T> Serialize for T
where T: SchemaWrite + ?Sized,