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
:
[]
= "0.5"
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.5"
= ["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.