Crates.io | map_struct |
lib.rs | map_struct |
version | 0.3.0 |
source | src |
created_at | 2019-06-01 14:56:59.03287 |
updated_at | 2019-07-05 15:06:00.915367 |
description | A rust library to map raw data to a struct. |
homepage | |
repository | |
max_upload_size | |
id | 138316 |
size | 6,453 |
A rust library to map raw data to a struct.
In Cargo.toml
,
[dependencies]
map_struct = "0.3"
Implement unsafe Mappable
trait to the struct to be mapped to a raw data:
#[repr(C)]
struct Hoge {
a: u8,
b: u8,
c: u16,
}
unsafe impl Mappable for Hoge {}
Call mapped
:
// mapped returns Option<(&Self, &[u8])>
Hoge::mapped(&[0x2, 0x3, 0x4, 0x5, 0x6])
mapped
returns None
if the argument length is not enough for the struct.
It otherwise returns the tuple of the reference to the mapped struct and the rest of the data.
For &mut [u8]
, we may also use mapped_mut
, which returns Option<(&mut Self, &mut [u8])>
instead.
We also provide a inverse method of mapped
, as_bytes
. The usage is following.
let hoge = Hoge::mapped(&[0x2, 0x3, 0x4, 0x5, 0x6]).unwrap().0;
assert!(hoge.as_bytes() == &[0x2, 0x3, 0x4, 0x5]);