]> git.proxmox.com Git - rustc.git/blame - vendor/scroll_derive/examples/main.rs
New upstream version 1.48.0+dfsg1
[rustc.git] / vendor / scroll_derive / examples / main.rs
CommitLineData
f035d41b
XL
1use scroll_derive::{Pread, Pwrite, IOread, IOwrite, SizeWith};
2
3#[derive(Debug, PartialEq, Pread, Pwrite, IOread, IOwrite, SizeWith)]
4#[repr(C)]
5struct Data {
6 id: u32,
7 timestamp: f64,
8 arr: [u16; 2],
9}
10
11use scroll::{Pread, Pwrite, Cread, LE};
12
13fn main () {
14 let bytes = [0xefu8, 0xbe, 0xad, 0xde, 0, 0, 0, 0, 0, 0, 224, 63, 0xad, 0xde, 0xef, 0xbe];
15 let data: Data = bytes.pread_with(0, LE).unwrap();
16 println!("data: {:?}", &data);
17 assert_eq!(data.id, 0xdeadbeefu32);
18 let mut bytes2 = vec![0; ::std::mem::size_of::<Data>()];
19 bytes2.pwrite_with(data, 0, LE).unwrap();
20 let data: Data = bytes.pread_with(0, LE).unwrap();
21 let data2: Data = bytes2.pread_with(0, LE).unwrap();
22 assert_eq!(data, data2);
23
24 let data: Data = bytes.cread_with(0, LE);
25 assert_eq!(data, data2);
26}