#serialization #deserialize #byte #networking #endianness #byte-array #macro-derive

无std 程序+库 bebytes

一个用于网络结构体序列化和反序列化的Rust库

9个版本

0.4.5 2024年6月29日
0.4.4 2024年6月29日
0.3.1 2024年6月28日
0.2.1 2024年1月15日
0.1.2 2023年7月8日

#1081 in 编码

Download history 3/week @ 2024-06-21 768/week @ 2024-06-28 58/week @ 2024-07-05 273/week @ 2024-07-26 21/week @ 2024-08-02

294 每月下载量
用于 2 crates

MIT 许可证

21KB
483

BeBytes

BeBytes是围绕BeBytes derive crate的特质包装器。

BeBytes Derive

Derive是一个过程宏crate,它提供了一个自定义 derive 宏,用于生成Rust中网络结构体的序列化和反序列化方法。该宏生成将结构体转换为字节表示(序列化)以及相反操作(反序列化)的代码,使用大端序。它旨在通过自动化Rust结构体和字节数组之间的转换来简化处理网络协议和消息格式的过程。

有关更多信息,请参阅BeBytes Derive crate

使用方法

要使用BeBytes,将其添加到您的Cargo.toml文件中的依赖项

[dependencies]
bebytes = "*"

然后,从bebytes_derive crate中导入BeBytes特质并为其结构体生成它

use bebytes::BeBytes;

#[derive(BeBytes)]
struct Dummy {
    a: u8,
}

fn build_with_bebytes(input: impl BeBytes) -> Vec<u8> {
    input.to_be_bytes()
}

fn build_from_bytes(input: &[u8]) -> Result<(Dummy, usize), Box<dyn std::error::Error>> {
    Dummy::try_from_be_bytes(input)
}

BeBytes derive 宏将为您的结构体生成以下方法

  • try_from_be_bytes(&[u8]) -> Result<(Self, usize), Box<dyn std::error::Error>>: 一个将字节切片转换为您的结构体实例的方法。它返回一个包含反序列化结构体和消耗的字节数的结果。
  • to_be_bytes(&self) -> Vec<u8>:将结构体转换为字节数据的方法。它返回一个包含序列化字节的 Vec<u8>
  • field_size() -> usize:计算结构体大小(以字节为单位)的方法。

贡献

我只是在玩,但所有帮助都受到欢迎。

许可证

此项目受MIT许可证许可。

依赖项

~275–730KB
~17K SLoC