This commit is contained in:
Yota Toyama
2023-05-21 13:39:31 +10:00
parent 04f5f88b33
commit 085028a8e1

View File

@@ -84,12 +84,21 @@ impl Allocator {
unsafe { GC_gcollect() }
}
pub unsafe fn register_finalizer(ptr: *const c_void, finalizer: impl FnOnce(*mut c_void)) {
pub unsafe fn register_finalizer(
ptr: *const c_void,
finalizer: impl FnOnce(*mut c_void) + 'static,
) {
unsafe extern "C" fn finalize<F: FnOnce(*mut c_void)>(ptr: *mut c_void, data: *mut c_void) {
(*(data as *mut F))(ptr)
}
GC_register_finalizer(ptr, finalize::<F>, &mut finalizer, null(), null());
GC_register_finalizer(
ptr,
finalize::<F>,
&mut &finalizer as *const _ as *const _,
null(),
null(),
);
}
}