#反序列化 #序列化 #无std

无std struct_deser

简单地对结构体进行(反)序列化

2个版本

使用旧的Rust 2015

0.1.1 2017年9月14日
0.1.0 2017年9月9日

2590解析器实现

MITNFA 许可证

14KB
366 代码行

结构体(反)序列化

该包提供了一个非常简单的结构体(反)序列化方法。主要目的是帮助处理数据包。

功能

  • derive(StructDeser)
  • 处理字节序
  • 关联常量
  • 无std

用法

extern crate struct_deser;
#[macro_use]
extern crate struct_deser_derive;

// derive traits
#[derive(StructDeser, Debug, Eq, PartialEq)]
struct Packet {
    // mark as big endian
    // this is mandatory because u16 has multiple bytes
    #[be]
    version: u16,
    // u8 goes without endianess attribute
    ttl: u8,
    // mark as little endian
    #[le]
    chksum: u32,
}

fn main() {
    use struct_deser::{SerializedByteLen,FromBytes,IntoBytes};

    let packet0 = Packet {
        version: 1,
        ttl: 42,
        chksum: 47,
    };

    let mut bytes = [0; Packet::BYTE_LEN];
    packet0.into_bytes(&mut bytes);
    let packet1 = Packet::from_bytes(&bytes);

    assert_eq!(packet0, packet1);
}

许可证

MITNFA

依赖项

~120KB