bytebuf.rs |
|
5736 |
bytes.rs |
|
3765 |
de.rs |
|
6439 |
lib.rs |
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_derive::{Deserialize, Serialize};
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>,
}
``` |
3099 |
ser.rs |
|
3037 |