pub struct ResourceId { /* private fields */ }Expand description
Generational index into the resource table.
Combines a slot index with a generation counter to prevent ABA problems. When a resource is freed and its slot reused, the generation is incremented. Any handle holding the old generation will fail validation.
§Invariants
indexidentifies the slot in the resource table.generationis incremented each time the slot is reused.- A handle is valid only if its generation matches the slot’s current generation.
§Examples
use torvyn_types::ResourceId;
let id = ResourceId::new(10, 1);
assert_eq!(id.index(), 10);
assert_eq!(id.generation(), 1);
assert_eq!(format!("{}", id), "resource-10:g1");Implementations§
Source§impl ResourceId
impl ResourceId
Sourcepub const fn new(index: u32, generation: u32) -> Self
pub const fn new(index: u32, generation: u32) -> Self
Create a new ResourceId.
§HOT PATH — called during resource allocation.
Sourcepub const fn generation(&self) -> u32
pub const fn generation(&self) -> u32
Returns the generation counter.
Sourcepub const fn next_generation(&self) -> Self
pub const fn next_generation(&self) -> Self
Returns a new ResourceId with the same index but incremented generation.
§HOT PATH — called when a resource slot is reused.
Trait Implementations§
Source§impl Clone for ResourceId
impl Clone for ResourceId
Source§fn clone(&self) -> ResourceId
fn clone(&self) -> ResourceId
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ResourceId
impl Debug for ResourceId
Source§impl<'de> Deserialize<'de> for ResourceId
impl<'de> Deserialize<'de> for ResourceId
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Display for ResourceId
impl Display for ResourceId
Source§impl From<ResourceId> for BufferHandle
impl From<ResourceId> for BufferHandle
Source§fn from(id: ResourceId) -> Self
fn from(id: ResourceId) -> Self
Converts to this type from the input type.
Source§impl Hash for ResourceId
impl Hash for ResourceId
Source§impl PartialEq for ResourceId
impl PartialEq for ResourceId
Source§impl Serialize for ResourceId
impl Serialize for ResourceId
impl Copy for ResourceId
impl Eq for ResourceId
impl StructuralPartialEq for ResourceId
Auto Trait Implementations§
impl Freeze for ResourceId
impl RefUnwindSafe for ResourceId
impl Send for ResourceId
impl Sync for ResourceId
impl Unpin for ResourceId
impl UnwindSafe for ResourceId
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