offset_of_enum

The tracking issue for this feature is: #120141


When the offset_of_enum feature is enabled, the offset_of! macro may be used to obtain the offsets of fields of enums; to express this, enum variants may be traversed as if they were fields. Variants themselves do not have an offset, so they cannot appear as the last path component.

#![allow(unused)]
#![feature(offset_of_enum)]
fn main() {
use std::mem;

#[repr(u8)]
enum Enum {
    A(u8, u16),
    B { one: u8, two: u16 },
}

assert_eq!(mem::offset_of!(Enum, A.0), 1);
assert_eq!(mem::offset_of!(Enum, B.two), 2);

assert_eq!(mem::offset_of!(Option<&u8>, Some.0), 0);
}