24 releases
Uses new Rust 2024
| 0.13.1 | Sep 6, 2025 |
|---|---|
| 0.13.0 | May 26, 2025 |
| 0.12.1 | Apr 6, 2025 |
| 0.12.0 | Jan 1, 2024 |
| 0.3.0 | Mar 15, 2017 |
#6 in #pread
2,286,895 downloads per month
Used in 118 crates
(6 directly)
36KB
835 lines
scroll_derive
Macros 1.1 implementing #[derive(Pread, Pwrite)] for https://github.com/m4b/scroll
Add derive annotations to your POD seamlessly and easily:
extern crate scroll;
#[macro_use]
extern crate scroll_derive;
#[derive(Debug, PartialEq, Pread, Pwrite, IOread, IOwrite, SizeWith)]
#[repr(C)]
struct Data {
id: u32,
timestamp: f64,
arr: [u16; 2],
}
use scroll::{Pread, Pwrite, Cread, LE};
fn main (){
let bytes = [0xefu8, 0xbe, 0xad, 0xde, 0, 0, 0, 0, 0, 0, 224, 63, 0xad, 0xde, 0xef, 0xbe];
let data: Data = bytes.pread_with(0, LE).unwrap();
println!("data: {data:?}");
assert_eq!(data.id, 0xdeadbeefu32);
let mut bytes2 = vec![0; ::std::mem::size_of::<Data>()];
bytes2.pwrite_with(data, 0, LE).unwrap();
let data: Data = bytes.pread_with(0, LE).unwrap();
let data2: Data = bytes2.pread_with(0, LE).unwrap();
assert_eq!(data, data2);
let data: Data = bytes.cread_with(0, LE);
assert_eq!(data, data2);
}
Dependencies
~150–550KB
~13K SLoC