pub struct ComponentEncoder { /* private fields */ }
Expand description

An encoder of components based on wit interface definitions.

Implementations§

source§

impl ComponentEncoder

source

pub fn module(self, module: &[u8]) -> Result<Self>

Set the core module to encode as a component. This method will also parse any component type information stored in custom sections inside the module, and add them as the interface, imports, and exports. It will also add any producers information inside the component type information to the core module.

source

pub fn validate(self, validate: bool) -> Self

Sets whether or not the encoder will validate its output.

source

pub fn adapter(self, name: &str, bytes: &[u8]) -> Result<Self>

Specifies a new adapter which is used to translate from a historical wasm ABI to the canonical ABI and the interface provided.

This is primarily used to polyfill, for example, wasi_snapshot_preview1 with a component-model using interface. The name provided is the module name of the adapter that is being polyfilled, for example "wasi_snapshot_preview1".

The bytes provided is a core wasm module which implements the name interface in terms of the interface interface. This core wasm module is severely restricted in its shape, for example it cannot have any data segments or element segments.

The interface provided is the component-model-using-interface that the wasm module specified by bytes imports. The bytes will then import interface and export functions to get imported from the module name in the core wasm that’s being wrapped.

source

pub fn library( self, name: &str, bytes: &[u8], library_info: LibraryInfo ) -> Result<Self>

Specifies a shared-everything library to link into the component.

Unlike adapters, libraries may have data and/or element segments, but they must operate on an imported memory and table, respectively. In this case, the correct amount of space is presumed to have been statically allocated in the main module’s memory and table at the offsets which the segments target, e.g. as arranged by super::linking::Linker.

Libraries are treated similarly to adapters, except that they are not “minified” the way adapters are, and instantiation is controlled declaratively via the library_info parameter.

source

pub fn realloc_via_memory_grow(self, value: bool) -> Self

True if the realloc and stack alloction should use ememory.grow The default is to use the main module realloc Can be useful if cabi_realloc cannot be called before the host runtime is initialised.

source

pub fn encode(&self) -> Result<Vec<u8>>

Encode the component and return the bytes.

Trait Implementations§

source§

impl Default for ComponentEncoder

source§

fn default() -> ComponentEncoder

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where 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 T
where 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 T
where 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.