| Crates.io | cs_serde_bytes |
| lib.rs | cs_serde_bytes |
| version | 0.12.2 |
| created_at | 2020-12-03 22:18:53.198636+00 |
| updated_at | 2022-08-31 12:37:30.249153+00 |
| description | Optimized handling of `&[u8]` and `Vec |
| homepage | |
| repository | https://github.com/ChainSafe/serde-bytes |
| max_upload_size | |
| id | 319460 |
| size | 41,704 |
This crate is fork of serde_bytes. The only differrence from the upstream is intentional no support for strings as bytes, making it more strict.
[dependencies]
cs_serde_bytes = "0.12.1"
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>,
}