1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
// check-pass union URes<R: Copy> { uninit: (), init: R, } struct Params<F, R: Copy> { function: F, result: URes<R>, } unsafe extern "C" fn do_call<F, R>(params: *mut Params<F, R>) where R: Copy, F: Fn() -> R, { (*params).result.init = ((*params).function)(); } fn main() {}