#offset #derive #mem #offset-of

无标准库 repr_offset_derive

用于推导具有稳定布局的类型的字段偏移量

4 个版本 (2 个破坏性更改)

0.2.0 2021年1月29日
0.1.1 2020年7月30日
0.1.0 2020年6月14日
0.0.0 2020年5月21日

#7#offset-of

Download history 24/week @ 2024-04-01 15/week @ 2024-04-08 19/week @ 2024-04-15 22/week @ 2024-04-22 7/week @ 2024-04-29 9/week @ 2024-05-06 15/week @ 2024-05-13 10/week @ 2024-05-20 34/week @ 2024-05-27 31/week @ 2024-06-03 33/week @ 2024-06-10 23/week @ 2024-06-17 23/week @ 2024-06-24 15/week @ 2024-07-01 23/week @ 2024-07-08 30/week @ 2024-07-15

每月下载量 94
用于 repr_offset

Zlib 许可证

16KB
348

Rust crates-io api-docs

repr_offset 允许计算并安全地使用具有定义布局的类型中的字段偏移量。

目前仅支持 #[repr(C)]/#[repr(C,packed)]/#[repr(C,align)] 结构体。

功能

以下是该库提供的一些功能

  • 提供 ReprOffset 推导宏,该宏输出与字段偏移量相关联的常量,并为每个字段实现 GetFieldOffset 特性。

  • 提供 FieldOffset 类型(如何表示偏移量),包含通过结构体的指针操作字段的函数,包括获取字段引用(或指针)的函数。

  • 作为ReprOffset宏的替代方案,unsafe_struct_field_offsets宏,在禁用"derive"功能时非常有用。

  • GetFieldOffset特质,用于获取字段的FieldOffset,以及用于获取字段FieldOffset的宏OFF!offPUB_OFF!pub_off,语法方便。

  • 来自ext模块的扩展特质,它定义了在给定FieldOffset的情况下操作字段的函数。

示例

对于示例,您可以查看repr_offset存储库根模块的文档中的示例部分

未来计划

目前没有。

Cargo功能

这些是repr_offset中的cargo功能

  • derive(默认禁用):启用ReprOffset宏。这需要与syn相同的Rust版本,目前为>= 1.56.0

  • "for_examples"(默认禁用):启用for_examples模块,其中包含文档示例中使用的类型。

将"derive"功能添加到Cargo.toml文件

repr_offset = { version = "0.2", features = ["derive"] }

no-std支持

这个库无条件地#![no_std],并且将来不太可能改变。

最小Rust版本

此存储库支持Rust回退到1.41.0。

许可证

使用Zlib许可证授权

依赖关系

~1.7–2.6MB
~56K SLoC