Crates.io | serde_bytes |
lib.rs | serde_bytes |
version | 0.11.15 |
source | src |
created_at | 2017-04-08 05:15:16.364612 |
updated_at | 2024-06-25 03:46:31.829402 |
description | Optimized handling of `&[u8]` and `Vec |
homepage | |
repository | https://github.com/serde-rs/bytes |
max_upload_size | |
id | 9991 |
size | 54,958 |
Wrapper types to enable optimized handling of &[u8]
and Vec<u8>
.
[dependencies]
serde_bytes = "0.11"
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>,
}