#struct #mapped #cargo-toml #raw #mappable

map_struct

将原始数据映射到结构的Rust库

3个版本 (破坏性更新)

0.3.0 2019年7月5日
0.2.0 2019年6月8日
0.1.0 2019年6月1日

#6 in #mapped

自定义许可

3KB

map_struct

将原始数据映射到结构的Rust库。

用法

Cargo.toml中,

[dependencies]
map_struct = "0.3"

Mappable特质实现到要映射到原始数据的结构中

#[repr(C)]
struct Hoge {
    a: u8,
    b: u8,
    c: u16,
}

unsafe impl Mappable for Hoge {}

调用mapped

// mapped returns Option<(&Self, &[u8])>
Hoge::mapped(&[0x2, 0x3, 0x4, 0x5, 0x6])

mapped如果参数长度不足以容纳结构,则返回None。否则返回映射结构的引用和数据余下的元组。对于&mut [u8],我们也可以使用mapped_mut,它返回Option<(&mut Self, &mut [u8])>

我们还提供了mapped的逆方法,as_bytes。用法如下。

let hoge = Hoge::mapped(&[0x2, 0x3, 0x4, 0x5, 0x6]).unwrap().0;
assert!(hoge.as_bytes() == &[0x2, 0x3, 0x4, 0x5]);

无运行时依赖