Trait wast::parser::Parse

source ·
pub trait Parse<'a>: Sized {
    // Required method
    fn parse(parser: Parser<'a>) -> Result<Self>;
}
Expand description

A trait for parsing a fragment of syntax in a recursive descent fashion.

The Parse trait is main abstraction you’ll be working with when defining custom parser or custom syntax for your WebAssembly text format (or when using the official format items). Almost all items in the core module implement the Parse trait, and you’ll commonly use this with:

  • The top-level parse function to parse an entire input.
  • The intermediate Parser::parse function to parse an item out of an input stream and then parse remaining items.

Implementation of Parse take a Parser as input and will mutate the parser as they parse syntax. Once a token is consume it cannot be “un-consumed”. Utilities such as Parser::peek and Parser::lookahead1 can be used to determine what to parse next.

§When to parse ( and )?

Conventionally types are not responsible for parsing their own ( and ) tokens which surround the type. For example WebAssembly imports look like:

(import "foo" "bar" (func (type 0)))

but the Import type parser looks like:

impl<'a> Parse<'a> for Import<'a> {
    fn parse(parser: Parser<'a>) -> Result<Self> {
        parser.parse::<kw::import>()?;
        // ...
    }
}

It is assumed here that the ( and ) tokens which surround an import statement in the WebAssembly text format are parsed by the parent item parsing Import.

Note that this is just a convention, so it’s not necessarily required for all types. It’s recommended that your types stick to this convention where possible to avoid nested calls to Parser::parens or accidentally trying to parse too many parenthesis.

§Examples

Let’s say you want to define your own WebAssembly text format which only contains imports and functions. You also require all imports to be listed before all functions. An example Parse implementation might look like:

use wast::core::{Import, Func};
use wast::kw;
use wast::parser::{Parser, Parse, Result};

// Fields of a WebAssembly which only allow imports and functions, and all
// imports must come before all the functions
struct OnlyImportsAndFunctions<'a> {
    imports: Vec<Import<'a>>,
    functions: Vec<Func<'a>>,
}

impl<'a> Parse<'a> for OnlyImportsAndFunctions<'a> {
    fn parse(parser: Parser<'a>) -> Result<Self> {
        // While the second token is `import` (the first is `(`, so we care
        // about the second) we parse an `ast::ModuleImport` inside of
        // parentheses. The `parens` function here ensures that what we
        // parse inside of it is surrounded by `(` and `)`.
        let mut imports = Vec::new();
        while parser.peek2::<kw::import>()? {
            let import = parser.parens(|p| p.parse())?;
            imports.push(import);
        }

        // Afterwards we assume everything else is a function. Note that
        // `parse` here is a generic function and type inference figures out
        // that we're parsing functions here and imports above.
        let mut functions = Vec::new();
        while !parser.is_empty() {
            let func = parser.parens(|p| p.parse())?;
            functions.push(func);
        }

        Ok(OnlyImportsAndFunctions { imports, functions })
    }
}

Required Methods§

source

fn parse(parser: Parser<'a>) -> Result<Self>

Attempts to parse Self from parser, returning an error if it could not be parsed.

This method will mutate the state of parser after attempting to parse an instance of Self. If an error happens then it is likely fatal and there is no guarantee of how many tokens have been consumed from parser.

As recommended in the documentation of Parse, implementations of this function should not start out by parsing ( and ) tokens, but rather parents calling recursive parsers should parse the ( and ) tokens for their child item that’s being parsed.

§Errors

This function will return an error if Self could not be parsed. Note that creating an Error is not exactly a cheap operation, so Error is typically fatal and propagated all the way back to the top parse call site.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Parse<'_> for String

source§

fn parse(parser: Parser<'_>) -> Result<Self>

source§

impl<'a> Parse<'a> for &'a str

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for &'a [u8]

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for (i8, Span)

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for (i16, Span)

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for (i32, Span)

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for (i64, Span)

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for (u8, Span)

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for (u16, Span)

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for (u32, Span)

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for (u64, Span)

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for Option<NameAnnotation<'a>>

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for i8

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for i16

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for i32

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for i64

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for u8

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for u16

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for u32

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for u64

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for Vec<CanonOpt<'a>>

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for Vec<ComponentTypeDecl<'a>>

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for Vec<InstanceTypeDecl<'a>>

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for Vec<ModuleTypeDecl<'a>>

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for Vec<ComponentExport<'a>>

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for Vec<CoreInstanceExport<'a>>

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for Vec<CoreInstantiationArg<'a>>

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a> Parse<'a> for Vec<InstantiationArg<'a>>

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a, T> Parse<'a> for Box<T>
where T: Parse<'a>,

source§

fn parse(parser: Parser<'a>) -> Result<Self>

source§

impl<'a, T: Peek + Parse<'a>> Parse<'a> for Option<T>

source§

fn parse(parser: Parser<'a>) -> Result<Option<T>>

Implementors§

source§

impl<'a> Parse<'a> for CanonOpt<'a>

source§

impl<'a> Parse<'a> for ComponentExportAliasKind

source§

impl<'a> Parse<'a> for ComponentExportKind<'a>

source§

impl<'a> Parse<'a> for ComponentField<'a>

source§

impl<'a> Parse<'a> for ComponentOuterAliasKind

source§

impl<'a> Parse<'a> for ComponentTypeDecl<'a>

source§

impl<'a> Parse<'a> for ComponentValType<'a>

source§

impl<'a> Parse<'a> for CoreFuncKind<'a>

source§

impl<'a> Parse<'a> for CoreInstanceKind<'a>

source§

impl<'a> Parse<'a> for CoreInstantiationArgKind<'a>

source§

impl<'a> Parse<'a> for CoreTypeDef<'a>

source§

impl<'a> Parse<'a> for FuncKind<'a>

source§

impl<'a> Parse<'a> for InstanceKind<'a>

source§

impl<'a> Parse<'a> for InstanceTypeDecl<'a>

source§

impl<'a> Parse<'a> for InstantiationArgKind<'a>

source§

impl<'a> Parse<'a> for ModuleTypeDecl<'a>

source§

impl<'a> Parse<'a> for PrimitiveValType

source§

impl<'a> Parse<'a> for Refinement<'a>

source§

impl<'a> Parse<'a> for TypeBounds<'a>

source§

impl<'a> Parse<'a> for wast::component::TypeDef<'a>

source§

impl<'a> Parse<'a> for WastVal<'a>

source§

impl<'a> Parse<'a> for wast::core::Custom<'a>

source§

impl<'a> Parse<'a> for CustomPlace

source§

impl<'a> Parse<'a> for CustomPlaceAnchor

source§

impl<'a> Parse<'a> for DataVal<'a>

source§

impl<'a> Parse<'a> for ExportKind

source§

impl<'a> Parse<'a> for HeapType<'a>

source§

impl<'a> Parse<'a> for Instruction<'a>

source§

impl<'a> Parse<'a> for MemoryType

source§

impl<'a> Parse<'a> for ModuleField<'a>

source§

impl<'a> Parse<'a> for Ordering

source§

impl<'a> Parse<'a> for StorageType<'a>

source§

impl<'a> Parse<'a> for TagType<'a>

source§

impl<'a> Parse<'a> for wast::core::TypeDef<'a>

source§

impl<'a> Parse<'a> for V128Const

source§

impl<'a> Parse<'a> for V128Pattern

source§

impl<'a> Parse<'a> for ValType<'a>

source§

impl<'a> Parse<'a> for WastArgCore<'a>

source§

impl<'a> Parse<'a> for WastRetCore<'a>

source§

impl<'a> Parse<'a> for QuoteWat<'a>

source§

impl<'a> Parse<'a> for WastArg<'a>

source§

impl<'a> Parse<'a> for WastDirective<'a>

source§

impl<'a> Parse<'a> for WastExecute<'a>

source§

impl<'a> Parse<'a> for WastRet<'a>

source§

impl<'a> Parse<'a> for Wat<'a>

source§

impl<'a> Parse<'a> for Index<'a>

source§

impl<'a> Parse<'a> for custom

source§

impl<'a> Parse<'a> for metadata_code_branch_hint

source§

impl<'a> Parse<'a> for name

source§

impl<'a> Parse<'a> for producers

source§

impl<'a> Parse<'a> for Alias<'a>

source§

impl<'a> Parse<'a> for CanonLift<'a>

source§

impl<'a> Parse<'a> for CanonLower<'a>

source§

impl<'a> Parse<'a> for CanonResourceDrop<'a>

source§

impl<'a> Parse<'a> for CanonResourceNew<'a>

source§

impl<'a> Parse<'a> for CanonResourceRep<'a>

source§

impl<'a> Parse<'a> for CanonicalFunc<'a>

source§

impl<'a> Parse<'a> for Component<'a>

source§

impl<'a> Parse<'a> for ComponentExport<'a>

source§

impl<'a> Parse<'a> for ComponentExportType<'a>

source§

impl<'a> Parse<'a> for ComponentExternName<'a>

source§

impl<'a> Parse<'a> for ComponentFunctionParam<'a>

source§

impl<'a> Parse<'a> for ComponentFunctionResult<'a>

source§

impl<'a> Parse<'a> for ComponentFunctionType<'a>

source§

impl<'a> Parse<'a> for ComponentImport<'a>

source§

impl<'a> Parse<'a> for ComponentType<'a>

source§

impl<'a> Parse<'a> for ComponentValTypeUse<'a>

source§

impl<'a> Parse<'a> for CoreFunc<'a>

source§

impl<'a> Parse<'a> for CoreInstance<'a>

source§

impl<'a> Parse<'a> for CoreInstanceExport<'a>

source§

impl<'a> Parse<'a> for CoreInstantiationArg<'a>

source§

impl<'a> Parse<'a> for CoreModule<'a>

source§

impl<'a> Parse<'a> for CoreType<'a>

source§

impl<'a> Parse<'a> for wast::component::Custom<'a>

source§

impl<'a> Parse<'a> for Enum<'a>

source§

impl<'a> Parse<'a> for Flags<'a>

source§

impl<'a> Parse<'a> for wast::component::Func<'a>

source§

impl<'a> Parse<'a> for InlineComponentValType<'a>

source§

impl<'a> Parse<'a> for wast::component::InlineExport<'a>

source§

impl<'a> Parse<'a> for wast::component::InlineImport<'a>

source§

impl<'a> Parse<'a> for Instance<'a>

source§

impl<'a> Parse<'a> for InstanceType<'a>

source§

impl<'a> Parse<'a> for InstantiationArg<'a>

source§

impl<'a> Parse<'a> for wast::component::ItemSig<'a>

source§

impl<'a> Parse<'a> for ItemSigNoName<'a>

source§

impl<'a> Parse<'a> for List<'a>

source§

impl<'a> Parse<'a> for ModuleType<'a>

source§

impl<'a> Parse<'a> for NestedComponent<'a>

source§

impl<'a> Parse<'a> for OptionType<'a>

source§

impl<'a> Parse<'a> for Record<'a>

source§

impl<'a> Parse<'a> for RecordField<'a>

source§

impl<'a> Parse<'a> for ResourceType<'a>

source§

impl<'a> Parse<'a> for ResultType<'a>

source§

impl<'a> Parse<'a> for Start<'a>

source§

impl<'a> Parse<'a> for Tuple<'a>

source§

impl<'a> Parse<'a> for Variant<'a>

source§

impl<'a> Parse<'a> for VariantCase<'a>

source§

impl<'a> Parse<'a> for ArrayCopy<'a>

source§

impl<'a> Parse<'a> for ArrayFill<'a>

source§

impl<'a> Parse<'a> for ArrayInit<'a>

source§

impl<'a> Parse<'a> for ArrayNewData<'a>

source§

impl<'a> Parse<'a> for ArrayNewElem<'a>

source§

impl<'a> Parse<'a> for ArrayNewFixed<'a>

source§

impl<'a> Parse<'a> for ArrayType<'a>

source§

impl<'a> Parse<'a> for BlockType<'a>

source§

impl<'a> Parse<'a> for BrOnCast<'a>

source§

impl<'a> Parse<'a> for BrOnCastFail<'a>

source§

impl<'a> Parse<'a> for BrTableIndices<'a>

source§

impl<'a> Parse<'a> for CallIndirect<'a>

source§

impl<'a> Parse<'a> for Data<'a>

source§

impl<'a> Parse<'a> for Dylink0<'a>

source§

impl<'a> Parse<'a> for Elem<'a>

source§

impl<'a> Parse<'a> for Export<'a>

source§

impl<'a> Parse<'a> for ExportType<'a>

source§

impl<'a> Parse<'a> for Expression<'a>

source§

impl<'a> Parse<'a> for wast::core::Func<'a>

source§

impl<'a> Parse<'a> for FunctionType<'a>

source§

impl<'a> Parse<'a> for FunctionTypeNoNames<'a>

source§

impl<'a> Parse<'a> for Global<'a>

source§

impl<'a> Parse<'a> for GlobalType<'a>

source§

impl<'a> Parse<'a> for I8x16Shuffle

source§

impl<'a> Parse<'a> for Import<'a>

source§

impl<'a> Parse<'a> for wast::core::InlineExport<'a>

source§

impl<'a> Parse<'a> for wast::core::InlineImport<'a>

source§

impl<'a> Parse<'a> for wast::core::ItemSig<'a>

source§

impl<'a> Parse<'a> for LaneArg

source§

impl<'a> Parse<'a> for Limits64

source§

impl<'a> Parse<'a> for Limits

source§

impl<'a> Parse<'a> for LocalParser<'a>

source§

impl<'a> Parse<'a> for Memory<'a>

source§

impl<'a> Parse<'a> for MemoryArg<'a>

source§

impl<'a> Parse<'a> for MemoryCopy<'a>

source§

impl<'a> Parse<'a> for MemoryInit<'a>

source§

impl<'a> Parse<'a> for Module<'a>

source§

impl<'a> Parse<'a> for OrderedAccess<'a>

source§

impl<'a> Parse<'a> for Producers<'a>

source§

impl<'a> Parse<'a> for RawCustomSection<'a>

source§

impl<'a> Parse<'a> for Rec<'a>

source§

impl<'a> Parse<'a> for RefCast<'a>

source§

impl<'a> Parse<'a> for RefTest<'a>

source§

impl<'a> Parse<'a> for RefType<'a>

source§

impl<'a> Parse<'a> for SelectTypes<'a>

source§

impl<'a> Parse<'a> for StructAccess<'a>

source§

impl<'a> Parse<'a> for StructType<'a>

source§

impl<'a> Parse<'a> for Table<'a>

source§

impl<'a> Parse<'a> for TableArg<'a>

source§

impl<'a> Parse<'a> for TableCopy<'a>

source§

impl<'a> Parse<'a> for TableInit<'a>

source§

impl<'a> Parse<'a> for TableType<'a>

source§

impl<'a> Parse<'a> for Tag<'a>

source§

impl<'a> Parse<'a> for TryTable<'a>

source§

impl<'a> Parse<'a> for Type<'a>

source§

impl<'a> Parse<'a> for acq_rel

source§

impl<'a> Parse<'a> for after

source§

impl<'a> Parse<'a> for alias

source§

impl<'a> Parse<'a> for any

source§

impl<'a> Parse<'a> for anyref

source§

impl<'a> Parse<'a> for arg

source§

impl<'a> Parse<'a> for array

source§

impl<'a> Parse<'a> for arrayref

source§

impl<'a> Parse<'a> for assert_exception

source§

impl<'a> Parse<'a> for assert_exhaustion

source§

impl<'a> Parse<'a> for assert_invalid

source§

impl<'a> Parse<'a> for assert_malformed

source§

impl<'a> Parse<'a> for assert_return

source§

impl<'a> Parse<'a> for assert_trap

source§

impl<'a> Parse<'a> for assert_unlinkable

source§

impl<'a> Parse<'a> for before

source§

impl<'a> Parse<'a> for binary

source§

impl<'a> Parse<'a> for block

source§

impl<'a> Parse<'a> for bool_

source§

impl<'a> Parse<'a> for borrow

source§

impl<'a> Parse<'a> for canon

source§

impl<'a> Parse<'a> for case

source§

impl<'a> Parse<'a> for catch

source§

impl<'a> Parse<'a> for catch_all

source§

impl<'a> Parse<'a> for catch_all_ref

source§

impl<'a> Parse<'a> for catch_ref

source§

impl<'a> Parse<'a> for char

source§

impl<'a> Parse<'a> for code

source§

impl<'a> Parse<'a> for component

source§

impl<'a> Parse<'a> for core

source§

impl<'a> Parse<'a> for data

source§

impl<'a> Parse<'a> for declare

source§

impl<'a> Parse<'a> for delegate

source§

impl<'a> Parse<'a> for do

source§

impl<'a> Parse<'a> for dtor

source§

impl<'a> Parse<'a> for elem

source§

impl<'a> Parse<'a> for else

source§

impl<'a> Parse<'a> for end

source§

impl<'a> Parse<'a> for enum_

source§

impl<'a> Parse<'a> for eq

source§

impl<'a> Parse<'a> for eqref

source§

impl<'a> Parse<'a> for error

source§

impl<'a> Parse<'a> for exn

source§

impl<'a> Parse<'a> for exnref

source§

impl<'a> Parse<'a> for export

source§

impl<'a> Parse<'a> for export_info

source§

impl<'a> Parse<'a> for extern

source§

impl<'a> Parse<'a> for externref

source§

impl<'a> Parse<'a> for f32

source§

impl<'a> Parse<'a> for f32x4

source§

impl<'a> Parse<'a> for f64

source§

impl<'a> Parse<'a> for f64x2

source§

impl<'a> Parse<'a> for false_

source§

impl<'a> Parse<'a> for field

source§

impl<'a> Parse<'a> for final

source§

impl<'a> Parse<'a> for first

source§

impl<'a> Parse<'a> for flags

source§

impl<'a> Parse<'a> for float32

source§

impl<'a> Parse<'a> for float64

source§

impl<'a> Parse<'a> for func

source§

impl<'a> Parse<'a> for funcref

source§

impl<'a> Parse<'a> for get

source§

impl<'a> Parse<'a> for global

source§

impl<'a> Parse<'a> for i8

source§

impl<'a> Parse<'a> for i8x16

source§

impl<'a> Parse<'a> for i16

source§

impl<'a> Parse<'a> for i16x8

source§

impl<'a> Parse<'a> for i31

source§

impl<'a> Parse<'a> for i31ref

source§

impl<'a> Parse<'a> for i32

source§

impl<'a> Parse<'a> for i32x4

source§

impl<'a> Parse<'a> for i64

source§

impl<'a> Parse<'a> for i64x2

source§

impl<'a> Parse<'a> for if

source§

impl<'a> Parse<'a> for import

source§

impl<'a> Parse<'a> for import_info

source§

impl<'a> Parse<'a> for instance

source§

impl<'a> Parse<'a> for instantiate

source§

impl<'a> Parse<'a> for interface

source§

impl<'a> Parse<'a> for invoke

source§

impl<'a> Parse<'a> for item

source§

impl<'a> Parse<'a> for language

source§

impl<'a> Parse<'a> for last

source§

impl<'a> Parse<'a> for lift

source§

impl<'a> Parse<'a> for list

source§

impl<'a> Parse<'a> for local

source§

impl<'a> Parse<'a> for loop

source§

impl<'a> Parse<'a> for lower

source§

impl<'a> Parse<'a> for mem_info

source§

impl<'a> Parse<'a> for memory

source§

impl<'a> Parse<'a> for module

source§

impl<'a> Parse<'a> for modulecode

source§

impl<'a> Parse<'a> for mut

source§

impl<'a> Parse<'a> for nan_arithmetic

source§

impl<'a> Parse<'a> for nan_canonical

source§

impl<'a> Parse<'a> for needed

source§

impl<'a> Parse<'a> for noexn

source§

impl<'a> Parse<'a> for noextern

source§

impl<'a> Parse<'a> for nofunc

source§

impl<'a> Parse<'a> for none

source§

impl<'a> Parse<'a> for null

source§

impl<'a> Parse<'a> for nullexnref

source§

impl<'a> Parse<'a> for nullexternref

source§

impl<'a> Parse<'a> for nullfuncref

source§

impl<'a> Parse<'a> for nullref

source§

impl<'a> Parse<'a> for offset

source§

impl<'a> Parse<'a> for option

source§

impl<'a> Parse<'a> for outer

source§

impl<'a> Parse<'a> for own

source§

impl<'a> Parse<'a> for pagesize

source§

impl<'a> Parse<'a> for param

source§

impl<'a> Parse<'a> for parent

source§

impl<'a> Parse<'a> for passive

source§

impl<'a> Parse<'a> for post_return

source§

impl<'a> Parse<'a> for processed_by

source§

impl<'a> Parse<'a> for quote

source§

impl<'a> Parse<'a> for realloc

source§

impl<'a> Parse<'a> for rec

source§

impl<'a> Parse<'a> for record

source§

impl<'a> Parse<'a> for ref

source§

impl<'a> Parse<'a> for ref_func

source§

impl<'a> Parse<'a> for ref_null

source§

impl<'a> Parse<'a> for refines

source§

impl<'a> Parse<'a> for register

source§

impl<'a> Parse<'a> for rep

source§

impl<'a> Parse<'a> for resource

source§

impl<'a> Parse<'a> for resource_drop

source§

impl<'a> Parse<'a> for resource_new

source§

impl<'a> Parse<'a> for resource_rep

source§

impl<'a> Parse<'a> for result

source§

impl<'a> Parse<'a> for s8

source§

impl<'a> Parse<'a> for s16

source§

impl<'a> Parse<'a> for s32

source§

impl<'a> Parse<'a> for s64

source§

impl<'a> Parse<'a> for sdk

source§

impl<'a> Parse<'a> for seq_cst

source§

impl<'a> Parse<'a> for shared

source§

impl<'a> Parse<'a> for start

source§

impl<'a> Parse<'a> for string

source§

impl<'a> Parse<'a> for string_latin1_utf16

source§

impl<'a> Parse<'a> for string_utf8

source§

impl<'a> Parse<'a> for string_utf16

source§

impl<'a> Parse<'a> for struct

source§

impl<'a> Parse<'a> for structref

source§

impl<'a> Parse<'a> for sub

source§

impl<'a> Parse<'a> for table

source§

impl<'a> Parse<'a> for tag

source§

impl<'a> Parse<'a> for then

source§

impl<'a> Parse<'a> for thread

source§

impl<'a> Parse<'a> for true_

source§

impl<'a> Parse<'a> for try

source§

impl<'a> Parse<'a> for tuple

source§

impl<'a> Parse<'a> for type

source§

impl<'a> Parse<'a> for u8

source§

impl<'a> Parse<'a> for u16

source§

impl<'a> Parse<'a> for u32

source§

impl<'a> Parse<'a> for u64

source§

impl<'a> Parse<'a> for v128

source§

impl<'a> Parse<'a> for value

source§

impl<'a> Parse<'a> for variant

source§

impl<'a> Parse<'a> for wait

source§

impl<'a> Parse<'a> for with

source§

impl<'a> Parse<'a> for Wast<'a>

source§

impl<'a> Parse<'a> for WastInvoke<'a>

source§

impl<'a> Parse<'a> for WastThread<'a>

source§

impl<'a> Parse<'a> for F32

source§

impl<'a> Parse<'a> for F64

source§

impl<'a> Parse<'a> for Id<'a>

source§

impl<'a> Parse<'a> for NameAnnotation<'a>

source§

impl<'a, K> Parse<'a> for IndexOrCoreRef<'a, K>
where K: Parse<'a> + Default,

source§

impl<'a, K> Parse<'a> for IndexOrRef<'a, K>
where K: Parse<'a> + Default,

source§

impl<'a, K: Parse<'a>> Parse<'a> for CoreItemRef<'a, K>

source§

impl<'a, K: Parse<'a>> Parse<'a> for wast::component::ItemRef<'a, K>

source§

impl<'a, K: Parse<'a>> Parse<'a> for wast::token::ItemRef<'a, K>

source§

impl<'a, T> Parse<'a> for NanPattern<T>
where T: Parse<'a>,

source§

impl<'a, T: Parse<'a>> Parse<'a> for ComponentTypeUse<'a, T>

source§

impl<'a, T: Parse<'a>> Parse<'a> for CoreTypeUse<'a, T>

source§

impl<'a, T: Peek + Parse<'a>> Parse<'a> for TypeUse<'a, T>

source§

impl<'a, const CORE: bool> Parse<'a> for InlineExportAlias<'a, CORE>