7 releases
| 0.2.2 | Feb 25, 2023 |
|---|---|
| 0.2.1 | Jan 30, 2021 |
| 0.1.2 | Jan 8, 2021 |
| 0.1.1 | Jul 30, 2020 |
| 0.0.1 | May 21, 2020 |
#59 in No standard library
74,837 downloads per month
Used in 73 crates
(via abi_stable)
210KB
2K
SLoC
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:
repr_offset = { version = "0.2", features = ["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
Dependencies
~91–410KB