MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / c_unchecked_callback_to_rust_fn

Function c_unchecked_callback_to_rust_fn

crates/c-api/src/func.rs:325–344  ·  view source on GitHub ↗
(
    callback: wasmtime_func_unchecked_callback_t,
    data: *mut c_void,
    finalizer: Option<extern "C" fn(*mut std::ffi::c_void)>,
)

Source from the content-addressed store, hash-verified

323}
324
325pub(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)]
347pub unsafe extern "C" fn wasmtime_func_call(

Calls 5

OkFunction · 0.85
callbackFunction · 0.50
castMethod · 0.45
as_mut_ptrMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected