memoffset

C-Like offset_of functionality for Rust structs.

Introduces the following macros: * offset_of! for obtaining the offset of a member of a struct. * span_of! for obtaining the range that a field, or fields, span.

memoffset works under no_std environments.

Usage

Add the following dependency to your Cargo.toml:

toml [dependencies] memoffset = "0.2"

Add the following lines at the top of your main.rs or lib.rs files.

```rust

[macro_use]

extern crate memoffset; ```

Examples

```rust

[repr(C, packed)]

struct Foo { a: u32, b: u32, c: [u8; 5], d: u32, }

asserteq!(offsetof!(Foo, b), 4); asserteq!(offsetof!(Foo, c[3]), 11);

asserteq!(spanof!(Foo, a), 0..4); asserteq!(spanof!(Foo, a .. c), 0..8); asserteq!(spanof!(Foo, a .. c[1]), 0..9); asserteq!(spanof!(Foo, a ..= c[1]), 0..10); asserteq!(spanof!(Foo, ..= d), 0..14); asserteq!(spanof!(Foo, b ..), 4..17); ```