23 个版本
0.11.15 | 2024年6月25日 |
---|---|
0.11.14 | 2024年1月2日 |
0.11.13 | 2023年12月27日 |
0.11.12 | 2023年7月15日 |
0.10.1 | 2017年6月30日 |
#13 in 编码
每月下载 2,438,364 次
用于 4,862 个 包 (直接使用 832 个)
36KB
920 行
serde_bytes
包装类型以实现针对 &[u8]
和 Vec<u8>
的优化处理。
[dependencies]
serde_bytes = "0.11"
说明
在没有特化的情况下,Rust 会强制 Serde 将 &[u8]
看作任何其他切片,将 Vec<u8>
看作任何其他向量。实际上,这个特定的切片和向量在许多格式中通常可以以更有效、更紧凑的表示进行序列化和反序列化。
当与这种格式一起工作时,您可以通过将 serde_bytes::Bytes
包装在 &[u8]
中,通过将 serde_bytes::ByteBuf
包装在 Vec<u8>
中来选择专门处理 &[u8]
。
此外,这个包支持Serde的with
属性,以便在不需要包装类型的情况下,高效地处理struct中的&[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.0或MIT许可证的约束。除非您明确声明,否则您根据Apache-2.0许可证定义的任何贡献,都将按上述方式双重许可,而不附加任何额外条款或条件。
依赖项
~110–350KB