//@ check-pass | |
#![deny(dead_code)] | |
#[repr(u8)] | |
#[derive(Copy, Clone, Debug)] | |
pub enum RecordField { | |
Target = 1, | |
Level, | |
Module, | |
File, | |
Line, | |
NumArgs, | |
} | |
unsafe trait Pod {} | |
#[repr(transparent)] | |
struct RecordFieldWrapper(RecordField); | |
unsafe impl Pod for RecordFieldWrapper {} | |
fn try_read<T: Pod>(buf: &[u8]) -> T { | |
unsafe { std::ptr::read_unaligned(buf.as_ptr() as *const T) } | |
} | |
pub fn foo(buf: &[u8]) -> RecordField { | |
let RecordFieldWrapper(tag) = try_read(buf); | |
tag | |
} | |
fn main() {} |