Struct wgpu_core::track::TrackerIndexAllocator

source ·
struct TrackerIndexAllocator {
    unused: Vec<TrackerIndex>,
    next_index: TrackerIndex,
}
Expand description

wgpu-core internally use some array-like storage for tracking resources. To that end, there needs to be a uniquely assigned index for each live resource of a certain type. This index is separate from the resource ID for various reasons:

  • There can be multiple resource IDs pointing the the same resource.
  • IDs of dead handles can be recycled while resources are internally held alive (and tracked).
  • The plan is to remove IDs in the long run (#5121).

In order to produce these tracker indices, there is a shared TrackerIndexAllocator per resource type. Indices have the same lifetime as the internal resource they are associated to (alloc happens when creating the resource and free is called when the resource is dropped).

Fields§

§unused: Vec<TrackerIndex>§next_index: TrackerIndex

Implementations§

source§

impl TrackerIndexAllocator

source

pub fn new() -> Self

source

pub fn alloc(&mut self) -> TrackerIndex

source

pub fn free(&mut self, index: TrackerIndex)

source

pub fn size(&self) -> usize

Trait Implementations§

source§

impl Debug for TrackerIndexAllocator

source§

fn fmt(&self, _: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast<T> for T

source§

fn downcast(&self) -> &T

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Upcast<T> for T

source§

fn upcast(&self) -> Option<&T>

source§

impl<T> WasmNotSend for T
where T: Send,

source§

impl<T> WasmNotSendSync for T

source§

impl<T> WasmNotSync for T
where T: Sync,