Struct casper_wasmi::NotStartedModuleRef
source · pub struct NotStartedModuleRef<'a> { /* private fields */ }Expand description
Mostly instantiated ModuleRef.
At this point memory segments and tables are copied. However, start function (if any) is not called.
To get fully instantiated module instance, running start function is required.
You can still access not fully initialized instance by calling not_started_instance,
but keep in mind, that this is sort of escape hatch: module really might depend on initialization
done in start function. It’s definitely not recommended to call any exports on ModuleRef
returned by this function.
If you sure, that there is no start function (e.g. because you created it without one), you can
call assert_no_start which returns ModuleRef without calling start function. However,
it will panic if module contains start function.
Implementations§
source§impl<'a> NotStartedModuleRef<'a>
impl<'a> NotStartedModuleRef<'a>
sourcepub fn not_started_instance(&self) -> &ModuleRef
pub fn not_started_instance(&self) -> &ModuleRef
Returns not fully initialized instance.
To fully initialize the instance you need to call either run_start or
assert_no_start. See struct documentation for details.
sourcepub fn run_start<E: Externals>(self, state: &mut E) -> Result<ModuleRef, Trap>
pub fn run_start<E: Externals>(self, state: &mut E) -> Result<ModuleRef, Trap>
Executes start function (if any) and returns fully instantiated module.
Errors
Returns Err if start function traps.
sourcepub fn run_start_with_stack<E: Externals>(
self,
state: &mut E,
stack_recycler: &mut StackRecycler
) -> Result<ModuleRef, Trap>
pub fn run_start_with_stack<E: Externals>( self, state: &mut E, stack_recycler: &mut StackRecycler ) -> Result<ModuleRef, Trap>
Executes start function (if any) and returns fully instantiated module.
Errors
Returns Err if start function traps.
sourcepub fn assert_no_start(self) -> ModuleRef
pub fn assert_no_start(self) -> ModuleRef
Returns fully instantiated module without running start function.
Panics
This function panics if original module contains start function.
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for NotStartedModuleRef<'a>
impl<'a> !Send for NotStartedModuleRef<'a>
impl<'a> !Sync for NotStartedModuleRef<'a>
impl<'a> Unpin for NotStartedModuleRef<'a>
impl<'a> !UnwindSafe for NotStartedModuleRef<'a>
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.