#serialize-deserialize #serde #serialization #byte #no-alloc #serde-derive #derive-deserialize

no-std serde_bytes_ng

Optimized handling of [u8; N], &[u8] and Vec<u8> for Serde

3 releases

0.1.2 Dec 10, 2023
0.1.1 Dec 10, 2023
0.1.0 Dec 9, 2023

#2361 in Encoding

Download history 2095/week @ 2024-10-27 2628/week @ 2024-11-03 2409/week @ 2024-11-10 2495/week @ 2024-11-17 2641/week @ 2024-11-24 2576/week @ 2024-12-01 2592/week @ 2024-12-08 1962/week @ 2024-12-15 1125/week @ 2024-12-22 1509/week @ 2024-12-29 2618/week @ 2025-01-05 2558/week @ 2025-01-12 2760/week @ 2025-01-19 2707/week @ 2025-01-26 2671/week @ 2025-02-02 2474/week @ 2025-02-09

10,730 downloads per month
Used in 17 crates (2 directly)

MIT/Apache

28KB
727 lines

ci crates.io

serde-bytes-ng

Integrate serde_bytes and generic byte array support.

The goal is the contribute to upstream serde_bytes, but because lack of response from its author, create a separate crate with generic byte array support plus latest serde_bytes codes so that can be released as one crate.

Example

use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize)]
struct Efficient<'a> {
    #[serde(with = "serde_bytes_ng")]
    bytes: &'a [u8],

    #[serde(with = "serde_bytes_ng")]
    byte_buf: Vec<u8>,

    #[serde(with = "serde_bytes_ng")]
    byte_array: [u8; 188],

    #[serde(with = "serde_bytes_ng", borrow)]
    byte_array_ref: &'a [u8; 188],

}

lib.rs:

Wrapper types to enable optimized handling of [u8; N], &[u8] and Vec<u8>.

This crate is a fork of serde_bytes that adds support for [u8; N] and &[u8; N].

#[derive(Deserialize, Serialize)]
struct Efficient<'a> {
    #[serde(with = "serde_bytes_ng")]
    bytes: &'a [u8],

    #[serde(with = "serde_bytes_ng")]
    byte_buf: Vec<u8>,

    #[serde(with = "serde_bytes_ng")]
    byte_array: [u8; 188],

    #[serde(with = "serde_bytes_ng", borrow)]
    byte_array_ref: &'a [u8; 188],
}

Dependencies

~100–325KB