Crate serde_bytes
source ·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.