4 releases (2 breaking)
0.2.0 | Jan 29, 2021 |
---|---|
0.1.1 | Jul 30, 2020 |
0.1.0 | Jun 14, 2020 |
0.0.0 | May 21, 2020 |
#8 in #offset-of
70 downloads per month
Used in repr_offset
16KB
348 lines
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
ReprOffset
derive macro, which outputs associated constants with the offsets of fields, and implements theGetFieldOffset
trait for each field. -
The
FieldOffset
type (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_offsets
macro as an alternative to theReprOffset
derive macro, most useful when the "derive" feature is disabled. -
The
GetFieldOffset
trait, for getting theFieldOffset
for a field, and theOFF!
,off
,PUB_OFF!
, andpub_off
macros for getting theFieldOffset
for a field with a convenient syntax. -
The extension traits from the
ext
module, 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 theReprOffset
derive macro. This requires the same Rust versions assyn
, which is currently>= 1.56.0
. -
"for_examples"
(disabled by default): Enables thefor_examples
module, 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
~1.8–2.7MB
~58K SLoC