repr_offset allows computing and safely using field offsets from types with a defined layout.
Currently only #[repr(C)]/#[repr(C,packed)]/#[repr(C,align)] structs are supported.
Features
These are some of the features this library provides:
-
The
ReprOffsetderive macro, which outputs associated constants with the offsets of fields, and implements theGetFieldOffsettrait for each field. -
The
FieldOffsettype (how offsets are represented), with methods for operating on a field through a pointer to the struct, including getting a reference(or pointer) to the field. -
The
unsafe_struct_field_offsetsmacro as an alternative to theReprOffsetderive macro, most useful when the "derive" feature is disabled. -
The
GetFieldOffsettrait, for getting theFieldOffsetfor a field, and theOFF!,off,PUB_OFF!, andpub_offmacros for getting theFieldOffsetfor a field with a convenient syntax. -
The extension traits from the
extmodule, which define methods for operating on a field, given aFieldOffset.
Examples
For examples you can look at
the examples section of the documentation for the root module of the repr_offset crate
Future plans
None for now.
Cargo features
These are the cargo features in repr_offset:
-
derive(disabled by default): Enables theReprOffsetderive macro. This requires the same Rust versions assyn, which is currently>= 1.56.0. -
"for_examples"(disabled by default): Enables thefor_examplesmodule, with types used in documentation examples.
Adding the "derive" feature to the Cargo.toml file:
= { = "0.2", = ["derive"] }
no-std support
This library is unconditionally #![no_std],and that is unlikely to change in the future.
Minimum Rust version
This crate support Rust back to 1.41.0.
License
Licensed under the Zlib license