Struct patract_wasmi::Module[][src]

pub struct Module { /* fields omitted */ }
Expand description

Deserialized module prepared for instantiation.

Implementations

Create Module from parity_wasm::elements::Module.

This function will load, validate and prepare a parity_wasm’s Module.

Errors

Returns Err if provided Module is not valid.

Examples
extern crate parity_wasm;
extern crate patract_wasmi;

use parity_wasm::builder;
use parity_wasm::elements;

fn main() {
    let parity_module =
        builder::module()
            .function()
                .signature().with_param(elements::ValueType::I32).build()
                .body().build()
            .build()
        .build();

    let module = patract_wasmi::Module::from_parity_wasm_module(parity_module)
        .expect("parity-wasm builder generated invalid module!");

    // Instantiate `module`, etc...
}

Fail if the module contains any floating-point operations

Errors

Returns Err if provided Module is not valid.

Examples

let wasm_binary: Vec<u8> =
    wabt::wat2wasm(
        r#"
        (module
         (func $add (param $lhs i32) (param $rhs i32) (result i32)
               get_local $lhs
               get_local $rhs
               i32.add))
        "#,
    )
    .expect("failed to parse wat");

// Load wasm binary and prepare it for instantiation.
let module = patract_wasmi::Module::from_buffer(&wasm_binary).expect("Parsing failed");
assert!(module.deny_floating_point().is_ok());

let wasm_binary: Vec<u8> =
    wabt::wat2wasm(
        r#"
        (module
         (func $add (param $lhs f32) (param $rhs f32) (result f32)
               get_local $lhs
               get_local $rhs
               f32.add))
        "#,
    )
    .expect("failed to parse wat");

let module = patract_wasmi::Module::from_buffer(&wasm_binary).expect("Parsing failed");
assert!(module.deny_floating_point().is_err());

let wasm_binary: Vec<u8> =
    wabt::wat2wasm(
        r#"
        (module
         (func $add (param $lhs f32) (param $rhs f32) (result f32)
               get_local $lhs))
        "#,
    )
    .expect("failed to parse wat");

let module = patract_wasmi::Module::from_buffer(&wasm_binary).expect("Parsing failed");
assert!(module.deny_floating_point().is_err());

Create Module from a given buffer.

This function will deserialize wasm module from a given module, validate and prepare it for instantiation.

Errors

Returns Err if wasm binary in provided buffer is not valid wasm binary.

Examples
extern crate patract_wasmi;

fn main() {
    let module =
        patract_wasmi::Module::from_buffer(
            // Minimal module:
            //   \0asm - magic
            //    0x01 - version (in little-endian)
            &[0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00]
        ).expect("Failed to load minimal module");

    // Instantiate `module`, etc...
}

Try to parse name section in place.

Corresponding custom section with proper header will convert to name sections If some of them will fail to be decoded, Err variant is returned with the list of (index, Error) tuples of failed sections.

Same as parse_names, but without error returns.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

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. Read more

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

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

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

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.