Crate serde_bytes[−][src]
Expand description
Wrapper types to enable optimized handling of &[u8]
and Vec<u8>
.
Without specialization, Rust forces Serde to treat &[u8]
just like any
other slice and Vec<u8>
just like any other vector. In reality this
particular slice and vector can often be serialized and deserialized in a
more efficient, compact representation in many formats.
When working with such a format, you can opt into specialized handling of
&[u8]
by wrapping it in serde_bytes::Bytes
and Vec<u8>
by wrapping it
in serde_bytes::ByteBuf
.
Additionally this crate supports the Serde with
attribute to enable
efficient handling of &[u8]
and Vec<u8>
in structs without needing a
wrapper type.
use serde::{Deserialize, Serialize}; #[derive(Deserialize, Serialize)] struct Efficient<'a> { #[serde(with = "serde_bytes")] bytes: &'a [u8], #[serde(with = "serde_bytes")] byte_buf: Vec<u8>, }
Structs
Wrapper around Vec<u8>
to serialize and deserialize efficiently.
Wrapper around [u8]
to serialize and deserialize efficiently.
Traits
Types that can be deserialized via #[serde(with = "serde_bytes")]
.
Types that can be serialized via #[serde(with = "serde_bytes")]
.
Functions
Serde deserialize_with
function to deserialize bytes efficiently.
Serde serialize_with
function to serialize bytes efficiently.