Files
simple-rust-tests/__ffi/c_layout/src/main_5.rs
2020-11-21 00:15:03 +08:00

25 lines
562 B
Rust

use zerocopy::FromBytes;
use zerocopy::AsBytes;
// use zerocopy::Unaligned;
use zerocopy::LayoutVerified;
use std::ops::Deref;
#[derive(FromBytes, AsBytes, Debug)]
#[repr(C)]
struct Header {
name: [u8; 4],
size: u32,
reserved: u64,
}
pub fn run_main() {
let h = Header {
name: [1,2,3,4],
size: 0xabcdef,
reserved: 0x0123456789abcdef,
};
println!("{:?}", h.as_bytes());
let h2: Option<LayoutVerified<&[u8], [Header]>> = LayoutVerified::new_slice(h.as_bytes());
println!("{:?}", h2.unwrap().deref()[0]);
}