Struct casper_wasmi::Module
source · pub struct Module { /* private fields */ }Expand description
Deserialized module prepared for instantiation.
Implementations§
source§impl Module
impl Module
sourcepub fn from_parity_wasm_module(module: Module) -> Result<Module, Error>
👎Deprecated: Please use Module::from_casper_wasm_module instead
pub fn from_parity_wasm_module(module: Module) -> Result<Module, Error>
Module::from_casper_wasm_module insteadCreate Module from casper_wasm::elements::Module.
This function will load, validate and prepare a casper_wasm’s Module.
Errors
Returns Err if provided Module is not valid.
Examples
extern crate casper_wasm;
extern crate casper_wasmi;
use casper_wasm::builder;
use casper_wasm::elements;
fn main() {
let parity_module =
builder::module()
.function()
.signature().with_param(elements::ValueType::I32).build()
.body().build()
.build()
.build();
let module = casper_wasmi::Module::from_casper_wasm_module(parity_module)
.expect("casper-wasm builder generated invalid module!");
// Instantiate `module`, etc...
}sourcepub fn from_casper_wasm_module(module: Module) -> Result<Module, Error>
pub fn from_casper_wasm_module(module: Module) -> Result<Module, Error>
Create Module from casper_wasm::elements::Module.
This function will load, validate and prepare a casper_wasm’s Module.
Errors
Returns Err if provided Module is not valid.
Examples
extern crate casper_wasm;
extern crate casper_wasmi;
use casper_wasm::builder;
use casper_wasm::elements;
fn main() {
let parity_module =
builder::module()
.function()
.signature().with_param(elements::ValueType::I32).build()
.body().build()
.build()
.build();
let module = casper_wasmi::Module::from_casper_wasm_module(parity_module)
.expect("casper-wasm builder generated invalid module!");
// Instantiate `module`, etc...
}sourcepub fn deny_floating_point(&self) -> Result<(), Error>
pub fn deny_floating_point(&self) -> Result<(), Error>
Fail if the module contains any floating-point operations
Errors
Returns Err if provided Module is not valid.
Examples
let wasm_binary: Vec<u8> =
wat::parse_str(
r#"
(module
(func $add (param $lhs i32) (param $rhs i32) (result i32)
local.get $lhs
local.get $rhs
i32.add))
"#,
)
.expect("failed to parse wat");
// Load wasm binary and prepare it for instantiation.
let module = casper_wasmi::Module::from_buffer(&wasm_binary).expect("Parsing failed");
assert!(module.deny_floating_point().is_ok());
let wasm_binary: Vec<u8> =
wat::parse_str(
r#"
(module
(func $add (param $lhs f32) (param $rhs f32) (result f32)
local.get $lhs
local.get $rhs
f32.add))
"#,
)
.expect("failed to parse wat");
let module = casper_wasmi::Module::from_buffer(&wasm_binary).expect("Parsing failed");
assert!(module.deny_floating_point().is_err());
let wasm_binary: Vec<u8> =
wat::parse_str(
r#"
(module
(func $add (param $lhs f32) (param $rhs f32) (result f32)
local.get $lhs))
"#,
)
.expect("failed to parse wat");
let module = casper_wasmi::Module::from_buffer(&wasm_binary).expect("Parsing failed");
assert!(module.deny_floating_point().is_err());sourcepub fn from_buffer<B: AsRef<[u8]>>(buffer: B) -> Result<Module, Error>
pub fn from_buffer<B: AsRef<[u8]>>(buffer: B) -> Result<Module, Error>
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 casper_wasmi;
fn main() {
let module =
casper_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...
}Auto Trait Implementations§
impl RefUnwindSafe for Module
impl Send for Module
impl Sync for Module
impl Unpin for Module
impl UnwindSafe for Module
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
Mutably borrows from an owned value. Read more
§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>
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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.§fn as_any(&self) -> &(dyn Any + 'static)
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.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
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.