#[repr(C, packed)] #[derive(Copy, Clone, Debug, PartialEq)] struct Foo { a: i8, b: i16, c: i8, } #[link(name = "test", kind = "static")] extern "C" { fn foo(f: Foo) -> Foo; } fn main() { unsafe { let a = Foo { a: 1, b: 2, c: 3 }; let b = foo(a); assert_eq!(a, b); } }