[−][src]Crate serde_bytes
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.
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::{Serialize, Deserialize}; #[derive(Serialize)] struct Efficient<'a> { #[serde(with = "serde_bytes")] bytes: &'a [u8], #[serde(with = "serde_bytes")] byte_buf: Vec<u8>, } #[derive(Serialize, Deserialize)] struct Packet { #[serde(with = "serde_bytes")] payload: Vec<u8>, }
Structs
| ByteBuf | Wrapper around |
| Bytes | Wrapper around |
Functions
| deserialize | Serde |
| serialize | Serde |