wasmparser/readers/component/
start.rs

1use crate::limits::{MAX_WASM_FUNCTION_RETURNS, MAX_WASM_START_ARGS};
2use crate::prelude::*;
3use crate::{BinaryReader, FromReader, Result};
4
5/// Represents the start function in a WebAssembly component.
6#[derive(Debug, Clone)]
7pub struct ComponentStartFunction {
8    /// The index to the start function.
9    pub func_index: u32,
10    /// The start function arguments.
11    ///
12    /// The arguments are specified by value index.
13    pub arguments: Box<[u32]>,
14    /// The number of expected results for the start function.
15    pub results: u32,
16}
17
18impl<'a> FromReader<'a> for ComponentStartFunction {
19    fn from_reader(reader: &mut BinaryReader<'a>) -> Result<Self> {
20        let func_index = reader.read_var_u32()?;
21        let arguments = reader
22            .read_iter(MAX_WASM_START_ARGS, "start function arguments")?
23            .collect::<Result<_>>()?;
24        let results = reader.read_size(MAX_WASM_FUNCTION_RETURNS, "start function results")? as u32;
25        Ok(ComponentStartFunction {
26            func_index,
27            arguments,
28            results,
29        })
30    }
31}