pub struct SubtypeArena<'a> { /* private fields */ }
Expand description
A helper typed used purely during subtyping as part of SubtypeCx
.
This takes a types
list as input which is the “base” of the ids that can
be indexed through this arena. All future types pushed into this, if any,
are stored in self.list
.
This is intended to have arena-like behavior where everything pushed onto
self.list
is thrown away after a subtyping computation is performed. All
new types pushed into this arena are purely temporary.
Trait Implementations§
source§impl<T> Index<T> for SubtypeArena<'_>where
T: TypeIdentifier,
impl<T> Index<T> for SubtypeArena<'_>where
T: TypeIdentifier,
source§impl Remap for SubtypeArena<'_>
impl Remap for SubtypeArena<'_>
source§fn push_ty<T>(&mut self, ty: T) -> <T as TypeData>::Idwhere
T: TypeData,
fn push_ty<T>(&mut self, ty: T) -> <T as TypeData>::Idwhere
T: TypeData,
Pushes a new anonymous type within this object, returning an identifier
which can be used to refer to it.
source§fn map_map(
tmp: &mut IndexMap<ResourceId, Vec<usize>>,
any_changed: &mut bool,
map: &Remapping,
)
fn map_map( tmp: &mut IndexMap<ResourceId, Vec<usize>>, any_changed: &mut bool, map: &Remapping, )
Apply
map
to the keys of tmp
, setting *any_changed = true
if any
keys were remapped.source§fn insert_if_any_changed<T>(
&mut self,
map: &mut Remapping,
any_changed: bool,
id: &mut <T as TypeData>::Id,
ty: T,
) -> bool
fn insert_if_any_changed<T>( &mut self, map: &mut Remapping, any_changed: bool, id: &mut <T as TypeData>::Id, ty: T, ) -> bool
If
any_changed
is true, push ty
, update map
to point id
to the
new type ID, set id
equal to the new type ID, and return true
.
Otherwise, update map
to point id
to itself and return false
.source§fn remap_component_any_type_id(
&mut self,
id: &mut ComponentAnyTypeId,
map: &mut Remapping,
) -> bool
fn remap_component_any_type_id( &mut self, id: &mut ComponentAnyTypeId, map: &mut Remapping, ) -> bool
Recursively search for any resource types reachable from
id
, updating
it and map
if any are found and remapped, returning true
iff at last
one is remapped.source§fn remap_resource_id(
&mut self,
id: &mut AliasableResourceId,
map: &Remapping,
) -> bool
fn remap_resource_id( &mut self, id: &mut AliasableResourceId, map: &Remapping, ) -> bool
If
map
indicates id
should be remapped, update it and return true
.
Otherwise, do nothing and return false
.source§fn remap_component_type_id(
&mut self,
id: &mut ComponentTypeId,
map: &mut Remapping,
) -> bool
fn remap_component_type_id( &mut self, id: &mut ComponentTypeId, map: &mut Remapping, ) -> bool
Recursively search for any resource types reachable from
id
, updating
it and map
if any are found and remapped, returning true
iff at last
one is remapped.source§fn remap_component_defined_type_id(
&mut self,
id: &mut ComponentDefinedTypeId,
map: &mut Remapping,
) -> bool
fn remap_component_defined_type_id( &mut self, id: &mut ComponentDefinedTypeId, map: &mut Remapping, ) -> bool
Recursively search for any resource types reachable from
id
, updating
it and map
if any are found and remapped, returning true
iff at last
one is remapped.source§fn remap_component_instance_type_id(
&mut self,
id: &mut ComponentInstanceTypeId,
map: &mut Remapping,
) -> bool
fn remap_component_instance_type_id( &mut self, id: &mut ComponentInstanceTypeId, map: &mut Remapping, ) -> bool
Recursively search for any resource types reachable from
id
, updating
it and map
if any are found and remapped, returning true
iff at last
one is remapped.source§fn remap_component_func_type_id(
&mut self,
id: &mut ComponentFuncTypeId,
map: &mut Remapping,
) -> bool
fn remap_component_func_type_id( &mut self, id: &mut ComponentFuncTypeId, map: &mut Remapping, ) -> bool
Recursively search for any resource types reachable from
id
, updating
it and map
if any are found and remapped, returning true
iff at last
one is remapped.source§fn remap_component_entity(
&mut self,
ty: &mut ComponentEntityType,
map: &mut Remapping,
) -> bool
fn remap_component_entity( &mut self, ty: &mut ComponentEntityType, map: &mut Remapping, ) -> bool
Same as
remap_type_id
, but works with ComponentEntityType
.source§fn remap_valtype(
&mut self,
ty: &mut ComponentValType,
map: &mut Remapping,
) -> bool
fn remap_valtype( &mut self, ty: &mut ComponentValType, map: &mut Remapping, ) -> bool
Same as
remap_type_id
, but works with ComponentValType
.Auto Trait Implementations§
impl<'a> Freeze for SubtypeArena<'a>
impl<'a> RefUnwindSafe for SubtypeArena<'a>
impl<'a> Send for SubtypeArena<'a>
impl<'a> Sync for SubtypeArena<'a>
impl<'a> Unpin for SubtypeArena<'a>
impl<'a> UnwindSafe for SubtypeArena<'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
Mutably borrows from an owned value. Read more
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more