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>

source

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.

source

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.

source

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.

source

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.

source

pub fn has_start(&self) -> bool

Whether or not the module has a start function.

Returns true if it has a 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> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast for Twhere T: Any,

source§

fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>

Convert 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.
source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.