C-Like offset_of functionality for Rust structs.
offset_of
Introduces the following macros:
offset_of!
span_of!
Add the following dependency to your Cargo.toml:
Cargo.toml
[dependencies] memoffset = "0.1"
Add the following lines at the top of your main.rs or lib.rs files.
main.rs
lib.rs
#[macro_use] extern crate memoffset;
#[repr(C, packed)] struct Foo { a: u32, b: u32, c: [u8; 5], d: u32, } assert_eq!(offset_of!(Foo, b), 4); assert_eq!(offset_of!(Foo, c[3]), 11); assert_eq!(span_of!(Foo, a), 0..4); assert_eq!(span_of!(Foo, a .. c), 0..8); assert_eq!(span_of!(Foo, a .. c[1]), 0..9); assert_eq!(span_of!(Foo, a .. =c[1]), 0..10);