macro_rules! cast { ($val: expr $(,)?) => { ... }; }
Safe transmute macro.
This function asserts at compile time that the two types have the same size.