(
callback: wasmtime_func_unchecked_callback_t,
data: *mut c_void,
finalizer: Option<extern "C" fn(*mut std::ffi::c_void)>,
)
| 323 | } |
| 324 | |
| 325 | pub(crate) unsafe fn c_unchecked_callback_to_rust_fn( |
| 326 | callback: wasmtime_func_unchecked_callback_t, |
| 327 | data: *mut c_void, |
| 328 | finalizer: Option<extern "C" fn(*mut std::ffi::c_void)>, |
| 329 | ) -> impl Fn(WasmtimeCaller<'_>, &mut [MaybeUninit<ValRaw>]) -> Result<()> { |
| 330 | let foreign = crate::ForeignData { data, finalizer }; |
| 331 | move |caller, values| { |
| 332 | let _ = &foreign; // move entire foreign into this closure |
| 333 | let mut caller = wasmtime_caller_t { caller }; |
| 334 | match callback( |
| 335 | foreign.data, |
| 336 | &mut caller, |
| 337 | values.as_mut_ptr().cast(), |
| 338 | values.len(), |
| 339 | ) { |
| 340 | None => Ok(()), |
| 341 | Some(trap) => Err(trap.error), |
| 342 | } |
| 343 | } |
| 344 | } |
| 345 | |
| 346 | #[unsafe(no_mangle)] |
| 347 | pub unsafe extern "C" fn wasmtime_func_call( |
no test coverage detected