Struct wasm_encoder::CodeSection [−][src]
pub struct CodeSection { /* fields omitted */ }
Expand description
An encoder for the code section.
Example
use wasm_encoder::{
CodeSection, Function, FunctionSection, Instruction, Module,
TypeSection, ValType
};
let mut types = TypeSection::new();
types.function(vec![], vec![ValType::I32]);
let mut functions = FunctionSection::new();
let type_index = 0;
functions.function(type_index);
let locals = vec![];
let mut func = Function::new(locals);
func.instruction(&Instruction::I32Const(42));
let mut code = CodeSection::new();
code.function(&func);
let mut module = Module::new();
module
.section(&types)
.section(&functions)
.section(&code);
let wasm_bytes = module.finish();
Implementations
Create a new code section encoder.
Write a function body into this code section.
Add a raw byte slice into this code section as a function body.
The length prefix of the function body will be automatically prepended, and should not be included in the raw byte slice.
Example
You can use the raw
method to copy an already-encoded function body
into a new code section encoder:
// id, size, # entries, entry
let code_section = [10, 6, 1, 4, 0, 65, 0, 11];
// Parse the code section.
let mut reader = wasmparser::CodeSectionReader::new(&code_section, 0).unwrap();
let body = reader.read().unwrap();
let body_range = body.range();
// Add the body to a new code section encoder by copying bytes rather
// than re-parsing and re-encoding it.
let mut encoder = wasm_encoder::CodeSection::new();
encoder.raw(&code_section[body_range.start..body_range.end]);
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for CodeSection
impl Send for CodeSection
impl Sync for CodeSection
impl Unpin for CodeSection
impl UnwindSafe for CodeSection
Blanket Implementations
Mutably borrows from an owned value. Read more