pub struct InitExpr(/* private fields */);Expand description
Initialization expression.
Implementations§
Source§impl InitExpr
impl InitExpr
Sourcepub fn new(code: Vec<Opcode>) -> Self
pub fn new(code: Vec<Opcode>) -> Self
New initialization expression from list of opcodes.
code must end with the Opcode::End opcode!
Sourcepub fn code(&self) -> &[Opcode]
pub fn code(&self) -> &[Opcode]
List of opcodes used in the expression.
Examples found in repository?
examples/data.rs (line 39)
8fn main() {
9
10 // Example executable takes one argument which must
11 // refernce the existing file with a valid wasm module
12 let args = env::args().collect::<Vec<_>>();
13 if args.len() != 2 {
14 println!("Usage: {} somefile.wasm", args[0]);
15 return;
16 }
17
18 // Here we load module using dedicated for this purpose
19 // `deserialize_file` function (which works only with modules)
20 let module = sophon_wasm::deserialize_file(&args[1]).expect("Failed to load module");
21
22 // We query module for data section. Note that not every valid
23 // wasm module must contain a data section. So in case the provided
24 // module does not contain data section, we panic with an error
25 let data_section = module.data_section().expect("no data section in module");
26
27 // Printing the total count of data segments
28 println!("Data segments: {}", data_section.entries().len());
29
30 let mut index = 0;
31 for entry in data_section.entries() {
32 // Printing the details info of each data segment
33 // see `elements::DataSegment` for more properties
34 // you can query
35 println!(" Entry #{}", index);
36
37 // This shows the initialization member of data segment
38 // (expression which must resolve in the linear memory location).
39 println!(" init: {}", entry.offset().code()[0]);
40
41 // This shows the total length of the data segment in bytes.
42 println!(" size: {}", entry.value().len());
43
44 index += 1;
45 }
46}Trait Implementations§
Auto Trait Implementations§
impl Freeze for InitExpr
impl RefUnwindSafe for InitExpr
impl Send for InitExpr
impl Sync for InitExpr
impl Unpin for InitExpr
impl UnwindSafe for InitExpr
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