6个版本
0.1.5 | 2024年2月12日 |
---|---|
0.1.4 | 2024年1月10日 |
#243 在 内存管理
44 每月下载量
在 fast_enum_conversion 中使用
5KB
71 代码行
addr_of_enum
此crate提供了#[derive(AddrOfEnum)]
和addr_of_enum!
宏,以获取指定变体的字段指针,而不创建中间引用。它的工作方式类似于std::ptr::addr_of!
,但仅适用于枚举。
此宏是零成本的,这意味着在发布模式下它以最小成本进行计算。
它还适用于具有未居住类型的变量。
示例
# use addr_of_enum::{addr_of_enum, AddrOfEnum};
#[derive(AddrOfEnum)]
#[repr(C)]
enum MyEnum {
E1(usize, u8),
E2 {
item1: u32,
item2: u8,
}
}
let e = MyEnum::E1(1, 2);
let _: *const usize = addr_of_enum!(&e, E1, 0);
let _: *const u32 = addr_of_enum!(&e, E2, item1);
限制
目前,这些宏不能在const上下文中使用。
依赖关系
~1.5MB
~37K SLoC