Struct soroban_wasmi::Linker
source · pub struct Linker<T> { /* private fields */ }
Expand description
A linker used to define module imports and instantiate module instances.
Implementations§
source§impl<T> Linker<T>
impl<T> Linker<T>
sourcepub fn define(
&mut self,
module: &str,
name: &str,
item: impl Into<Extern>
) -> Result<&mut Self, LinkerError>
pub fn define( &mut self, module: &str, name: &str, item: impl Into<Extern> ) -> Result<&mut Self, LinkerError>
sourcepub fn func_new(
&mut self,
module: &str,
name: &str,
ty: FuncType,
func: impl Fn(Caller<'_, T>, &[Value], &mut [Value]) -> Result<(), Trap> + Send + Sync + 'static
) -> Result<&mut Self, LinkerError>
pub fn func_new( &mut self, module: &str, name: &str, ty: FuncType, func: impl Fn(Caller<'_, T>, &[Value], &mut [Value]) -> Result<(), Trap> + Send + Sync + 'static ) -> Result<&mut Self, LinkerError>
sourcepub fn func_wrap<Params, Args>(
&mut self,
module: &str,
name: &str,
func: impl IntoFunc<T, Params, Args>
) -> Result<&mut Self, LinkerError>
pub fn func_wrap<Params, Args>( &mut self, module: &str, name: &str, func: impl IntoFunc<T, Params, Args> ) -> Result<&mut Self, LinkerError>
Creates a new named Func::new
-style host Func
for this Linker
.
For information how to use this API see Func::wrap
.
This method creates a host function for this Linker
under the given name.
It is distint in its ability to create a Store
independent
host function. Host functions defined this way can be used to instantiate
instances in multiple different Store
entities.
The same applies to other Linker
methods to define new Func
instances
such as Linker::func_new
.
In a concurrently running program, this means that these host functions
could be called concurrently if different Store
entities are executing on
different threads.
§Errors
If there already is a definition under the same name for this Linker
.
sourcepub fn get(
&self,
context: impl AsContext<UserState = T>,
module: &str,
name: &str
) -> Option<Extern>
pub fn get( &self, context: impl AsContext<UserState = T>, module: &str, name: &str ) -> Option<Extern>
sourcepub fn instantiate(
&self,
context: impl AsContextMut<UserState = T>,
module: &Module
) -> Result<InstancePre, Error>
pub fn instantiate( &self, context: impl AsContextMut<UserState = T>, module: &Module ) -> Result<InstancePre, Error>
Trait Implementations§
Auto Trait Implementations§
impl<T> !RefUnwindSafe for Linker<T>
impl<T> Send for Linker<T>
impl<T> Sync for Linker<T>
impl<T> Unpin for Linker<T>
impl<T> !UnwindSafe for Linker<T>
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.