byteme
A proc-macro
to convert a struct into Vec and back by implemeting From
trait on the struct.
The conversion is Big Endian by default.
We have made the following assumptions about the the struct:
- The struct must have fields.
- The fields are public.
- The fields have the following types
u8
u16
u32
u64
u128
usize
[u8; N]
- an enum
- For enum, we must attach a
#[byte_me($size)]
attribute, where size is any of the positive integer types. - The enum declration must have
#[derive(FromPrimitive)]
from thenum-derive
crate.
The num-derive
crate is required to generate the FromPrimitive
trait for enums. Having said that, the same
functionality can be achieved using num-enum
crate. It provides furthur control over the enum data types,
and might prove handy. here is the discussion
on the topic.
Example
use ByteMe;
pub use FromPrimitive;
;
let frame = FrameOne ;
let size = SIZE; // Get the number of bytes in the frame
let bytes: = frame.into; // Converts the frame into vector of bytes
let frame: FrameOne = bytes.into; // Converts the bytes back to frame
License: Apache-2.0