fune/third_party/rust/scroll_derive
Ben Dean-Kawamura b9d37221b3 Bug 1888683 - Checking in automated code changes. r=janerik,supply-chain-reviewers,glandium
This is the result of running `mach vendor rust`, `mach cargo vet prune` and `mach uniffi generate`

Depends on D206130

Differential Revision: https://phabricator.services.mozilla.com/D206131
2024-04-10 17:23:01 +00:00
..
src
.cargo-checksum.json Bug 1888683 - Checking in automated code changes. r=janerik,supply-chain-reviewers,glandium 2024-04-10 17:23:01 +00:00
Cargo.toml Bug 1888683 - Checking in automated code changes. r=janerik,supply-chain-reviewers,glandium 2024-04-10 17:23:01 +00:00
LICENSE
README.md Bug 1888683 - Checking in automated code changes. r=janerik,supply-chain-reviewers,glandium 2024-04-10 17:23:01 +00:00

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);
}