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>
Please use Module::from_casper_wasm_module instead
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 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 Freeze for Module
impl RefUnwindSafe for Module
impl Send for Module
impl Sync for Module
impl Unpin for Module
impl UnsafeUnpin 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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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.Source§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.Source§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.Source§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.