3个版本
0.1.2 | 2023年2月27日 |
---|---|
0.1.1 | 2023年2月24日 |
0.1.0 | 2023年2月24日 |
#741 in 编码
每月下载量4,620
在 9 个crate中(5个直接)使用
18KB
412 行
serde_byte_array
包装类型,以实现对 [u8; N]
的优化处理
说明
在没有特化的情况下,Rust强制Serde将 [u8; N]
当作任何其他数组处理。实际上,这个特定数组在很多格式中通常可以以更高效、更紧凑的表示形式进行序列化和反序列化。
当与这种格式一起工作时,您可以通过将 [u8; N]
包装在 serde_byte_array::ByteArray<N>
中来选择专门处理 [u8; N]
。
此外,此crate还支持Serde的 with
属性,以实现不需要包装类型就能高效处理struct中的 [u8; N]
和 &[u8; N]
。
示例
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize)]
struct Efficient<'a> {
#[serde(with = "serde_byte_array")]
bytes: [u8; 3],
#[serde(with = "serde_byte_array", borrow)]
bytes_ref: &'a [u8; 3],
}
许可证
根据您的选择,在 Apache License, Version 2.0 或 MIT许可证 下授权。除非您明确声明,否则根据Apache-2.0许可证的定义,您有意提交给此crate的贡献将被双授权,如上所述,无需任何额外的条款或条件。
依赖关系
~110–345KB