Struct TypedFunc
pub struct TypedFunc<Params, Results> { /* private fields */ }
Expand description
A statically typed WebAssembly function.
Values of this type represent statically type-checked WebAssembly functions.
The function within a TypedFunc
is statically known to have Params
as its
parameters and Results
as its results.
This structure is created via Func::typed
or TypedFunc::new_unchecked
.
For more documentation about this see those methods.
Implementations§
§impl<Params, Results> TypedFunc<Params, Results>where
Params: WasmParams,
Results: WasmResults,
impl<Params, Results> TypedFunc<Params, Results>where
Params: WasmParams,
Results: WasmResults,
pub unsafe fn new_unchecked(
store: impl AsContext,
func: Func,
) -> TypedFunc<Params, Results>
pub unsafe fn new_unchecked( store: impl AsContext, func: Func, ) -> TypedFunc<Params, Results>
An unchecked version of Func::typed
which does not perform a
typecheck and simply assumes that the type declared here matches the
type of this function.
The semantics of this function are the same as Func::typed
except
that no error is returned because no typechecking is done.
§Unsafety
This function only safe to call if typed
would otherwise return Ok
for the same Params
and Results
specified. If typed
would return
an error then the returned TypedFunc
is memory unsafe to invoke.
pub fn func(&self) -> &Func
pub fn func(&self) -> &Func
Returns the underlying Func
that this is wrapping, losing the static
type information in the process.
pub fn call(
&self,
store: impl AsContextMut,
params: Params,
) -> Result<Results, Error>
pub fn call( &self, store: impl AsContextMut, params: Params, ) -> Result<Results, Error>
Invokes this WebAssembly function with the specified parameters.
Returns either the results of the call, or a Trap
if one happened.
For more information, see the Func::typed
and Func::call
documentation.
§Errors
For more information on errors see the documentation on Func::call
.
§Panics
This function will panic if it is called when the underlying Func
is
connected to an asynchronous store.
pub async fn call_async<T>(
&self,
store: impl AsContextMut<Data = T>,
params: Params,
) -> Result<Results, Error>where
T: Send,
pub async fn call_async<T>(
&self,
store: impl AsContextMut<Data = T>,
params: Params,
) -> Result<Results, Error>where
T: Send,
Invokes this WebAssembly function with the specified parameters.
Returns either the results of the call, or a Trap
if one happened.
For more information, see the Func::typed
and Func::call_async
documentation.
§Errors
For more information on errors see the documentation on Func::call
.
§Panics
This function will panic if it is called when the underlying Func
is
connected to a synchronous store.
Trait Implementations§
Auto Trait Implementations§
impl<Params, Results> Freeze for TypedFunc<Params, Results>
impl<Params, Results> !RefUnwindSafe for TypedFunc<Params, Results>
impl<Params, Results> Send for TypedFunc<Params, Results>
impl<Params, Results> Sync for TypedFunc<Params, Results>
impl<Params, Results> Unpin for TypedFunc<Params, Results>
impl<Params, Results> !UnwindSafe for TypedFunc<Params, Results>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more