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]);