#serialization #byte-slice #serde #byte-vector #no-std #derive-deserialize

no-std cs_serde_bytes

为Serde优化处理 &[u8]Vec<u8>

3个版本

0.12.2 2022年8月31日
0.12.1 2022年8月11日
0.12.0 2020年12月3日

1191编码 中排名

Download history 3365/week @ 2024-03-14 2562/week @ 2024-03-21 2134/week @ 2024-03-28 3005/week @ 2024-04-04 3124/week @ 2024-04-11 2382/week @ 2024-04-18 1266/week @ 2024-04-25 1607/week @ 2024-05-02 1749/week @ 2024-05-09 1615/week @ 2024-05-16 1387/week @ 2024-05-23 1387/week @ 2024-05-30 1818/week @ 2024-06-06 1670/week @ 2024-06-13 1968/week @ 2024-06-20 1020/week @ 2024-06-27

每月下载量 6,860
125 个crate中使用(8个直接使用)

MIT/Apache

24KB
603

cs_serde_bytes 构建状态 最新版本

免责声明

此crate是 serde_bytes 的分支。与上游的唯一区别是有意不支持字符串作为字节,使其更加严格。

[dependencies]
cs_serde_bytes = "0.12.1"

说明

没有特化,Rust强制Serde将 &[u8] 看作任何其他切片,将 Vec<u8> 看作任何其他向量。实际上,这个特定的切片和向量在许多格式中可以以更高效、紧凑的表示进行序列化和反序列化。

当与这种格式一起工作时,可以通过将 serde_bytes::Bytes 包装 &[u8] 来选择使用专门的 serde_bytes::ByteBuf 包装 Vec<u8>

此外,这个包支持Serde的with属性,可以有效地处理结构体中的&[u8]Vec<u8>,无需使用包装类型。

示例

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>,
}

许可证

在您选择的情况下,许可协议为Apache License, Version 2.0MIT许可证
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在本包中的任何贡献,将根据上述方式双重许可,无需任何额外条款或条件。

依赖项

~110–345KB