pub struct IndexedID<E, P> {
pub indexed: GenIndex,
/* private fields */
}Expand description
Index-backed ID storing a GenIndex (real index + generation).
IndexedID is a compact representation suitable for serialization,
hashing, and comparisons. It stores the GenIndex produced by the allocator
and keeps a PhantomData to tie the ID to the element and policy types.
中文说明:索引型 ID,包含 GenIndex 用于表达槽位与世代信息,适合哈希、比较与持久化场景。
Fields§
§indexed: GenIndexThe underlying GenIndex representing the indexed entity.
Implementations§
Source§impl<E, P: IAllocPolicy> IndexedID<E, P>
impl<E, P: IAllocPolicy> IndexedID<E, P>
Sourcepub fn next_to_alloc(alloc: &EntityAlloc<E, P>) -> Self
pub fn next_to_alloc(alloc: &EntityAlloc<E, P>) -> Self
Create an IndexedID that represents the next index the allocator would allocate.
注意:这只是对分配器内部 next_index 的封装,实际分配仍需调用分配接口。
Sourcepub fn get_generation(self) -> u16
pub fn get_generation(self) -> u16
Return the generation stored in this IndexedID.
返回索引中的世代号(用于检测过期的引用)。
Trait Implementations§
Source§impl<E, P: IAllocPolicy> IEntityAllocID<E, P> for IndexedID<E, P>
impl<E, P: IAllocPolicy> IEntityAllocID<E, P> for IndexedID<E, P>
Source§fn from_ptr(alloc: &EntityAlloc<E, P>, ptr: PtrID<E, P>) -> Option<Self>
fn from_ptr(alloc: &EntityAlloc<E, P>, ptr: PtrID<E, P>) -> Option<Self>
Create an ID from a pointer-backed ID, validating generation/index.
Source§fn from_index(_: &EntityAlloc<E, P>, indexed: IndexedID<E, P>) -> Option<Self>
fn from_index(_: &EntityAlloc<E, P>, indexed: IndexedID<E, P>) -> Option<Self>
Create an ID from an index-backed ID, validating generation/index.
Source§fn try_deref(self, alloc: &EntityAlloc<E, P>) -> Option<&E>
fn try_deref(self, alloc: &EntityAlloc<E, P>) -> Option<&E>
Try to dereference the entity this ID points to, returning
None if invalid.Source§fn try_deref_mut(self, alloc: &mut EntityAlloc<E, P>) -> Option<&mut E>
fn try_deref_mut(self, alloc: &mut EntityAlloc<E, P>) -> Option<&mut E>
Try to mutably dereference the entity this ID points to, returning
None if invalid.Source§fn to_index(self, _: &EntityAlloc<E, P>) -> Option<IndexedID<E, P>>
fn to_index(self, _: &EntityAlloc<E, P>) -> Option<IndexedID<E, P>>
Convert this ID to an index-backed ID, validating generation/index.
Source§fn to_ptr(self, alloc: &EntityAlloc<E, P>) -> Option<PtrID<E, P>>
fn to_ptr(self, alloc: &EntityAlloc<E, P>) -> Option<PtrID<E, P>>
Convert this ID to a pointer-backed ID, validating generation/index.
Source§fn allocate_from(alloc: &EntityAlloc<E, P>, val: E) -> Self
fn allocate_from(alloc: &EntityAlloc<E, P>, val: E) -> Self
Allocate a new entity in the given allocator and return its ID.
NOTE that
MTB::Entity library is ID-driven; allocation and deallocation
must be done through IDs.Source§fn free(self, alloc: &mut EntityAlloc<E, P>) -> Option<E>
fn free(self, alloc: &mut EntityAlloc<E, P>) -> Option<E>
Free the referenced entity and return its owned value if successful. Read more
Source§fn deref(self, alloc: &EntityAlloc<E, P>) -> &E
fn deref(self, alloc: &EntityAlloc<E, P>) -> &E
Directly dereference the entity this ID points to, panicking if invalid.
Source§fn deref_mut(self, alloc: &mut EntityAlloc<E, P>) -> &mut E
fn deref_mut(self, alloc: &mut EntityAlloc<E, P>) -> &mut E
Directly mutably dereference the entity this ID points to, panicking if invalid.
Source§impl<E, P: IAllocPolicy> IPoliciedID for IndexedID<E, P>
impl<E, P: IAllocPolicy> IPoliciedID for IndexedID<E, P>
Source§fn from_backend(ptr: Self::BackID) -> Self
fn from_backend(ptr: Self::BackID) -> Self
Create this ID from its backend representation.
Source§fn into_backend(self) -> Self::BackID
fn into_backend(self) -> Self::BackID
Convert this ID into its backend representation.
Source§fn try_deref_alloc(self, alloc: &IDBoundAlloc<Self>) -> Option<&Self::ObjectT>
fn try_deref_alloc(self, alloc: &IDBoundAlloc<Self>) -> Option<&Self::ObjectT>
Try to dereference the object this ID points to, returning
None if invalid.Source§fn try_deref_alloc_mut(
self,
alloc: &mut IDBoundAlloc<Self>,
) -> Option<&mut Self::ObjectT>
fn try_deref_alloc_mut( self, alloc: &mut IDBoundAlloc<Self>, ) -> Option<&mut Self::ObjectT>
Try to mutably dereference the object this ID points to, returning
None if invalid.Source§fn deref_alloc(self, alloc: &IDBoundAlloc<Self>) -> &Self::ObjectT
fn deref_alloc(self, alloc: &IDBoundAlloc<Self>) -> &Self::ObjectT
Dereference the object this ID points to, panicking if invalid.
Source§fn deref_alloc_mut(self, alloc: &mut IDBoundAlloc<Self>) -> &mut Self::ObjectT
fn deref_alloc_mut(self, alloc: &mut IDBoundAlloc<Self>) -> &mut Self::ObjectT
Mutably dereference the object this ID points to, panicking if invalid.
Source§impl<E, P> Ord for IndexedID<E, P>
impl<E, P> Ord for IndexedID<E, P>
Source§impl<E, P> PartialOrd for IndexedID<E, P>
impl<E, P> PartialOrd for IndexedID<E, P>
impl<E, P> Copy for IndexedID<E, P>
impl<E, P> Eq for IndexedID<E, P>
Auto Trait Implementations§
impl<E, P> Freeze for IndexedID<E, P>
impl<E, P> RefUnwindSafe for IndexedID<E, P>where
E: RefUnwindSafe,
P: RefUnwindSafe,
impl<E, P> Send for IndexedID<E, P>
impl<E, P> Sync for IndexedID<E, P>
impl<E, P> Unpin for IndexedID<E, P>
impl<E, P> UnwindSafe for IndexedID<E, P>where
E: UnwindSafe,
P: UnwindSafe,
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