Struct wasmparser::component_types::ComponentType
source · pub struct ComponentType {
pub imports: IndexMap<String, ComponentEntityType>,
pub exports: IndexMap<String, ComponentEntityType>,
pub imported_resources: Vec<(ResourceId, Vec<usize>)>,
pub defined_resources: Vec<(ResourceId, Vec<usize>)>,
pub explicit_resources: IndexMap<ResourceId, Vec<usize>>,
/* private fields */
}
Expand description
Represents a type of a component.
Fields§
§imports: IndexMap<String, ComponentEntityType>
The imports of the component type.
Each import has its own kebab-name and an optional URL listed. Note that the set of import names is disjoint with the set of export names.
exports: IndexMap<String, ComponentEntityType>
The exports of the component type.
Each export has its own kebab-name and an optional URL listed. Note that the set of export names is disjoint with the set of import names.
imported_resources: Vec<(ResourceId, Vec<usize>)>
Universally quantified resources required to be provided when instantiating this component type.
Each resource in this map is explicitly imported somewhere in the
imports
map. The “path” to where it’s imported is specified by the
Vec<usize>
payload here. For more information about the indexes see
the documentation on ComponentState::imported_resources
.
This should technically be inferrable from the structure of imports
,
but it’s stored as an auxiliary set for subtype checking and
instantiation.
Note that this is not a set of all resources referred to by the
imports
. Instead it’s only those created, relative to the internals of
this component, by the imports.
defined_resources: Vec<(ResourceId, Vec<usize>)>
The dual of the imported_resources
, or the set of defined
resources – those created through the instantiation process which are
unique to this component.
This set is similar to the imported_resources
set but it’s those
contained within the exports
. Instantiating this component will
create fresh new versions of all of these resources. The path here is
within the exports
array.
explicit_resources: IndexMap<ResourceId, Vec<usize>>
The set of all resources which are explicitly exported by this component, and where they’re exported.
This mapping is stored separately from defined_resources
to ensure
that it contains all exported resources, not just those which are
defined. That means that this can cover reexports of imported
resources, exports of local resources, or exports of closed-over
resources for example.
Trait Implementations§
source§impl Clone for ComponentType
impl Clone for ComponentType
source§fn clone(&self) -> ComponentType
fn clone(&self) -> ComponentType
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ComponentType
impl Debug for ComponentType
source§impl TypeData for ComponentType
impl TypeData for ComponentType
source§type Id = ComponentTypeId
type Id = ComponentTypeId
Auto Trait Implementations§
impl Freeze for ComponentType
impl RefUnwindSafe for ComponentType
impl Send for ComponentType
impl Sync for ComponentType
impl Unpin for ComponentType
impl UnwindSafe for ComponentType
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
)