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
impl RefUnwindSafe for Module
impl UnwindSafe for Module
Blanket Implementations
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