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.offset_of_tuple!for obtaining the offset of a member of a tuple. (Requires Rust 1.20+)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:
[]
= "0.6"
These versions will compile fine with rustc versions greater or equal to 1.19.
Add the following lines at the top of your main.rs or lib.rs files.
extern crate memoffset;
Examples
extern crate memoffset;
Feature flags
Usage in constants
memoffset has experimental support for compile-time offset_of! on a nightly compiler.
In order to use it, you must enable the unstable_const crate feature and several compiler features.
Cargo.toml:
[]
= "0.6"
= ["unstable_const"]
Your crate root: (lib.rs/main.rs)
If you intend to use offset_of! inside a const fn, also add the const_fn compiler feature.
Raw references
Recent nightlies support a way to create raw pointers that avoids creating intermediate safe references.
memoffset can make use of that feature to avoid what is technically Undefined Behavior.
Use the unstable_raw feature to enable this.