map_struct

Crates.iomap_struct
lib.rsmap_struct
version0.3.0
sourcesrc
created_at2019-06-01 14:56:59.03287
updated_at2019-07-05 15:06:00.915367
descriptionA rust library to map raw data to a struct.
homepage
repository
max_upload_size
id138316
size6,453
Hajime Fukuda (hajifkd)

documentation

README

map_struct

A rust library to map raw data to a struct.

Usage

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]);
Commit count: 0

cargo fmt