binrw 0.11.2

A Rust crate for helping read structs from binary data using ✨macro magic✨
Documentation
extern crate alloc;

use alloc::format;
use binrw::{io::Cursor, BinRead, BinReaderExt, PosValue};

#[test]
fn pos_value() {
    #[derive(BinRead)]
    struct MyType {
        a: u16,
        b: PosValue<u8>,
    }

    let mut val = Cursor::new(b"\xFF\xFE\xFD").read_be::<MyType>().unwrap();
    assert_eq!(val.a, 0xFFFE);
    assert_eq!(val.b.pos, 2);
    assert_eq!(*val.b, 0xFD);
    assert_eq!(val.b, 0xFDu8);

    *val.b = 1u8;
    assert_eq!(*val.b, 1);
    assert_eq!(format!("{:?}", val.b), "1");
    let clone = val.b.clone();
    assert_eq!(*clone, *val.b);
    assert_eq!(clone.pos, val.b.pos);
}