inf_wast/component/
custom.rs

1use crate::annotation;
2use crate::parser::{Parse, Parser, Result};
3use crate::token::Span;
4
5/// A custom section within a component.
6#[derive(Debug)]
7pub struct Custom<'a> {
8    /// Where this `@custom` was defined.
9    pub span: Span,
10
11    /// Name of the custom section.
12    pub name: &'a str,
13
14    /// Payload of this custom section.
15    pub data: Vec<&'a [u8]>,
16}
17
18impl<'a> Parse<'a> for Custom<'a> {
19    fn parse(parser: Parser<'a>) -> Result<Self> {
20        let span = parser.parse::<annotation::custom>()?.0;
21        let name = parser.parse()?;
22        let mut data = Vec::new();
23        while !parser.is_empty() {
24            data.push(parser.parse()?);
25        }
26        Ok(Self { span, name, data })
27    }
28}