Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::mem::size_of;
- pub fn closure_to_ffi<F: Fn(i32, i32) -> i32>(f: F) -> (*mut F, unsafe extern "C" fn(*mut F, i32, i32) -> i32) {
- unsafe extern "C" fn call_closure_from_ffi<F: Fn(i32, i32) -> i32>(f: *mut F, a: i32, b: i32) -> i32 {
- println!("size of `*mut F`: {} bytes", size_of::<*mut F>());
- (*f)(a, b)
- }
- (Box::into_raw(Box::new(f)), call_closure_from_ffi::<F>)
- }
- pub fn main() {
- let (f0, f1) = closure_to_ffi(|x, y| x + y);
- unsafe {
- f1(f0, 1, 2);
- }
- }
Add Comment
Please, Sign In to add comment