extern crate testcrate; use std::mem; extern "C" { fn give_back(tu: testcrate::TestUnion) -> u64; } fn main() { let magic: u64 = 0xDEADBEEF; // Let's test calling it cross crate let back = unsafe { testcrate::give_back(mem::transmute(magic)) }; assert_eq!(magic, back); // And just within this crate let back = unsafe { give_back(mem::transmute(magic)) }; assert_eq!(magic, back); }