pub macro offset_of($Container:ty, $($fields:tt).+ $(,)?) { ... }
🔬This is a nightly-only experimental API. (
offset_of
#106655)Expand description
从给定类型的开头扩展到字段的偏移量 (以字节为单位)。
仅支持结构体、unions 和元组。
可以使用嵌套字段访问,但不能使用像 C 的 offsetof
中那样的数组索引。
注意这个宏的输出是不稳定的,#[repr(C)]
类型除外。
Examples
#![feature(offset_of)]
use std::mem;
#[repr(C)]
struct FieldStruct {
first: u8,
second: u16,
third: u8
}
assert_eq!(mem::offset_of!(FieldStruct, first), 0);
assert_eq!(mem::offset_of!(FieldStruct, second), 2);
assert_eq!(mem::offset_of!(FieldStruct, third), 4);
#[repr(C)]
struct NestedA {
b: NestedB
}
#[repr(C)]
struct NestedB(u8);
assert_eq!(mem::offset_of!(NestedA, b.0), 0);
Run