Struct wasmparser::types::TypesRef
source · pub struct TypesRef<'a> { /* private fields */ }
Expand description
Represents the types known to a crate::Validator
during validation.
Retrieved via the crate::Validator::types
method.
Implementations§
source§impl<'a> TypesRef<'a>
impl<'a> TypesRef<'a>
sourcepub fn core_type_at_in_component(&self, index: u32) -> ComponentCoreTypeId
pub fn core_type_at_in_component(&self, index: u32) -> ComponentCoreTypeId
Gets a core WebAssembly type id from a type index.
Note that this is not to be confused with
TypesRef::component_type_at
which gets a component type from its
index, nor TypesRef::core_type_count_in_module
which does not work
for components.
§Panics
This will panic if the index
provided is out of bounds.
sourcepub fn core_type_count_in_component(&self) -> u32
pub fn core_type_count_in_component(&self) -> u32
Returns the number of core types defined so far within a component.
This should only be used for components. For modules see
TypesRef::core_type_count_in_module
.
sourcepub fn component_any_type_at(&self, index: u32) -> ComponentAnyTypeId
pub fn component_any_type_at(&self, index: u32) -> ComponentAnyTypeId
Gets a type id from a type index.
§Panics
Panics if index
is not a valid type index or if this type information
represents a core module.
sourcepub fn component_type_at(&self, index: u32) -> ComponentTypeId
pub fn component_type_at(&self, index: u32) -> ComponentTypeId
Gets a component type id from a type index.
§Panics
Panics if index
is not a valid component type index or if this type
information represents a core module.
sourcepub fn component_defined_type_at(&self, index: u32) -> ComponentDefinedTypeId
pub fn component_defined_type_at(&self, index: u32) -> ComponentDefinedTypeId
Gets a type id from a type index.
§Panics
Panics if index
is not a valid function index or if this type
information represents a core module.
sourcepub fn component_type_count(&self) -> u32
pub fn component_type_count(&self) -> u32
Returns the number of component types defined so far.
sourcepub fn component_function_at(&self, index: u32) -> ComponentFuncTypeId
pub fn component_function_at(&self, index: u32) -> ComponentFuncTypeId
Gets the type of a component function at the given function index.
§Panics
This will panic if the index
provided is out of bounds or if this type
information represents a core module.
sourcepub fn component_function_count(&self) -> u32
pub fn component_function_count(&self) -> u32
Returns the number of component functions defined so far.
sourcepub fn module_at(&self, index: u32) -> ComponentCoreModuleTypeId
pub fn module_at(&self, index: u32) -> ComponentCoreModuleTypeId
Gets the type of a module at the given module index.
§Panics
This will panic if the index
provided is out of bounds or if this type
information represents a core module.
sourcepub fn module_count(&self) -> u32
pub fn module_count(&self) -> u32
Returns the number of core wasm modules defined so far.
sourcepub fn core_instance_at(&self, index: u32) -> ComponentCoreInstanceTypeId
pub fn core_instance_at(&self, index: u32) -> ComponentCoreInstanceTypeId
Gets the type of a module instance at the given module instance index.
§Panics
This will panic if the index
provided is out of bounds or if this type
information represents a core module.
sourcepub fn core_instance_count(&self) -> u32
pub fn core_instance_count(&self) -> u32
Returns the number of core wasm instances defined so far.
sourcepub fn component_at(&self, index: u32) -> ComponentTypeId
pub fn component_at(&self, index: u32) -> ComponentTypeId
Gets the type of a component at the given component index.
§Panics
This will panic if the index
provided is out of bounds or if this type
information represents a core module.
sourcepub fn component_count(&self) -> u32
pub fn component_count(&self) -> u32
Returns the number of components defined so far.
sourcepub fn component_instance_at(&self, index: u32) -> ComponentInstanceTypeId
pub fn component_instance_at(&self, index: u32) -> ComponentInstanceTypeId
Gets the type of an component instance at the given component instance index.
§Panics
This will panic if the index
provided is out of bounds or if this type
information represents a core module.
sourcepub fn component_instance_count(&self) -> u32
pub fn component_instance_count(&self) -> u32
Returns the number of component instances defined so far.
sourcepub fn value_at(&self, index: u32) -> ComponentValType
pub fn value_at(&self, index: u32) -> ComponentValType
Gets the type of a value at the given value index.
§Panics
This will panic if the index
provided is out of bounds or if this type
information represents a core module.
sourcepub fn value_count(&self) -> u32
pub fn value_count(&self) -> u32
Returns the number of component values defined so far.
sourcepub fn component_entity_type_of_import(
&self,
name: &str,
) -> Option<ComponentEntityType>
pub fn component_entity_type_of_import( &self, name: &str, ) -> Option<ComponentEntityType>
Gets the component entity type for the given component import.
sourcepub fn component_entity_type_of_export(
&self,
name: &str,
) -> Option<ComponentEntityType>
pub fn component_entity_type_of_export( &self, name: &str, ) -> Option<ComponentEntityType>
Gets the component entity type for the given component export.
sourcepub fn peel_alias<T>(&self, ty: T) -> Option<T>where
T: Aliasable,
pub fn peel_alias<T>(&self, ty: T) -> Option<T>where
T: Aliasable,
Attempts to lookup the type id that ty
is an alias of.
Returns None
if ty
wasn’t listed as aliasing a prior type.
source§impl<'a> TypesRef<'a>
impl<'a> TypesRef<'a>
sourcepub fn id(&self) -> ValidatorId
pub fn id(&self) -> ValidatorId
Get the id of the validator that these types are associated with.
sourcepub fn get<T>(&self, id: T) -> Option<&'a T::Data>where
T: TypeIdentifier,
pub fn get<T>(&self, id: T) -> Option<&'a T::Data>where
T: TypeIdentifier,
Gets a type based on its type id.
Returns None
if the type id is unknown.
sourcepub fn rec_group_id_of(&self, id: CoreTypeId) -> RecGroupId
pub fn rec_group_id_of(&self, id: CoreTypeId) -> RecGroupId
Get the id of the rec group that the given type id was defined within.
sourcepub fn rec_group_elements(
&self,
id: RecGroupId,
) -> impl ExactSizeIterator<Item = CoreTypeId>
pub fn rec_group_elements( &self, id: RecGroupId, ) -> impl ExactSizeIterator<Item = CoreTypeId>
Get the types within a rec group.
sourcepub fn supertype_of(&self, id: CoreTypeId) -> Option<CoreTypeId>
pub fn supertype_of(&self, id: CoreTypeId) -> Option<CoreTypeId>
Get the super type of the given type id, if any.
sourcepub fn core_type_at_in_module(&self, index: u32) -> CoreTypeId
pub fn core_type_at_in_module(&self, index: u32) -> CoreTypeId
Gets a core WebAssembly type id from a type index.
Note that this is not to be confused with
TypesRef::component_type_at
which gets a component type from its
index, nor TypesRef::core_type_at_in_component
which is for
learning about core types in components.
§Panics
This will panic if the index
provided is out of bounds.
sourcepub fn core_type_count_in_module(&self) -> u32
pub fn core_type_count_in_module(&self) -> u32
Returns the number of core types defined so far.
Note that this is only for core modules, for components you should use
TypesRef::core_type_count_in_component
instead.
sourcepub fn table_at(&self, index: u32) -> TableType
pub fn table_at(&self, index: u32) -> TableType
Gets the type of a table at the given table index.
§Panics
This will panic if the index
provided is out of bounds.
sourcepub fn table_count(&self) -> u32
pub fn table_count(&self) -> u32
Returns the number of tables defined so far.
sourcepub fn memory_at(&self, index: u32) -> MemoryType
pub fn memory_at(&self, index: u32) -> MemoryType
Gets the type of a memory at the given memory index.
§Panics
This will panic if the index
provided is out of bounds.
sourcepub fn memory_count(&self) -> u32
pub fn memory_count(&self) -> u32
Returns the number of memories defined so far.
sourcepub fn global_at(&self, index: u32) -> GlobalType
pub fn global_at(&self, index: u32) -> GlobalType
Gets the type of a global at the given global index.
§Panics
This will panic if the index
provided is out of bounds.
sourcepub fn global_count(&self) -> u32
pub fn global_count(&self) -> u32
Returns the number of globals defined so far.
sourcepub fn tag_at(&self, index: u32) -> CoreTypeId
pub fn tag_at(&self, index: u32) -> CoreTypeId
Gets the type of a tag at the given tag index.
§Panics
This will panic if the index
provided is out of bounds.
sourcepub fn core_function_at(&self, index: u32) -> CoreTypeId
pub fn core_function_at(&self, index: u32) -> CoreTypeId
Gets the type of a core function at the given function index.
§Panics
This will panic if the index
provided is out of bounds.
sourcepub fn function_count(&self) -> u32
pub fn function_count(&self) -> u32
Gets the count of core functions defined so far.
Note that this includes imported functions, defined functions, and for components lowered/aliased functions.
sourcepub fn element_at(&self, index: u32) -> RefType
pub fn element_at(&self, index: u32) -> RefType
Gets the type of an element segment at the given element segment index.
§Panics
This will panic if the index
provided is out of bounds.
sourcepub fn element_count(&self) -> u32
pub fn element_count(&self) -> u32
Returns the number of elements defined so far.
sourcepub fn entity_type_from_import(&self, import: &Import<'_>) -> Option<EntityType>
pub fn entity_type_from_import(&self, import: &Import<'_>) -> Option<EntityType>
Gets the entity type for the given import.
sourcepub fn entity_type_from_export(&self, export: &Export<'_>) -> Option<EntityType>
pub fn entity_type_from_export(&self, export: &Export<'_>) -> Option<EntityType>
Gets the entity type from the given export.
sourcepub fn core_imports(
&self,
) -> Option<impl Iterator<Item = (&'a str, &'a str, EntityType)> + 'a>
pub fn core_imports( &self, ) -> Option<impl Iterator<Item = (&'a str, &'a str, EntityType)> + 'a>
Returns an iterator over the core wasm imports found.
Returns None
if this type information is for a component.
sourcepub fn core_exports(
&self,
) -> Option<impl Iterator<Item = (&'a str, EntityType)> + 'a>
pub fn core_exports( &self, ) -> Option<impl Iterator<Item = (&'a str, EntityType)> + 'a>
Returns an iterator over the core wasm exports found.
Returns None
if this type information is for a component.
Trait Implementations§
source§impl<T> Index<T> for TypesRef<'_>where
T: TypeIdentifier,
impl<T> Index<T> for TypesRef<'_>where
T: TypeIdentifier,
impl<'a> Copy for TypesRef<'a>
Auto Trait Implementations§
impl<'a> Freeze for TypesRef<'a>
impl<'a> RefUnwindSafe for TypesRef<'a>
impl<'a> Send for TypesRef<'a>
impl<'a> Sync for TypesRef<'a>
impl<'a> Unpin for TypesRef<'a>
impl<'a> UnwindSafe for TypesRef<'a>
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)