#![allow(dead_code, deprecated, unused_variables, unused_mut)] #![feature(transmutability)] use core::mem::{Assume, TransmuteFrom}; struct EvenU8 { val: u8, } fn main() { let src: u8 = 42; let maybe_dst: Option = if src % 2 == 0 { Some(unsafe { <_ as TransmuteFrom<_, { Assume::SAFETY }>>::transmute(src) }) } else { None }; assert!(matches!(maybe_dst, Some(EvenU8 { val : 42 }))); }