Struct wgpu_core::device::bgl::EntryMap

source ·
pub struct EntryMap {
    inner: IndexMap<u32, BindGroupLayoutEntry, BuildHasherDefault<FxHasher>>,
    sorted: bool,
}
Expand description

A HashMap-like structure that stores a BindGroupLayouts wgt::BindGroupLayoutEntrys.

It is hashable, so bind group layouts can be deduplicated.

Fields§

§inner: IndexMap<u32, BindGroupLayoutEntry, BuildHasherDefault<FxHasher>>

We use a IndexMap here so that we can sort the entries by their binding index, guaranteeing that the hash of equivalent layouts will be the same.

§sorted: bool

We keep track of whether the map is sorted or not, so that we can assert that it is sorted, so that PartialEq and Hash will be stable.

We only need sorted if it is used in a Hash or PartialEq, so we never need to actively sort it.

Implementations§

source§

impl EntryMap

source

fn assert_sorted(&self)

source

pub fn from_entries( device_limits: &Limits, entries: &[BindGroupLayoutEntry], ) -> Result<Self, CreateBindGroupLayoutError>

Create a new EntryMap from a slice of wgt::BindGroupLayoutEntrys.

Errors if there are duplicate bindings or if any binding index is greater than the device’s limits.

source

pub fn len(&self) -> usize

Get the count of wgt::BindGroupLayoutEntrys in this map.

source

pub fn get(&self, binding: u32) -> Option<&BindGroupLayoutEntry>

Get the wgt::BindGroupLayoutEntry for the given binding index.

source

pub fn indices(&self) -> impl ExactSizeIterator<Item = u32> + '_

Iterator over all the binding indices in this map.

source

pub fn values( &self, ) -> impl ExactSizeIterator<Item = &BindGroupLayoutEntry> + '_

Iterator over all the wgt::BindGroupLayoutEntrys in this map.

source

pub fn iter( &self, ) -> impl ExactSizeIterator<Item = (&u32, &BindGroupLayoutEntry)> + '_

source

pub fn is_empty(&self) -> bool

source

pub fn contains_key(&self, key: u32) -> bool

source

pub fn entry(&mut self, key: u32) -> Entry<'_, u32, BindGroupLayoutEntry>

source

pub fn sort(&mut self)

Trait Implementations§

source§

impl Clone for EntryMap

source§

fn clone(&self) -> EntryMap

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EntryMap

source§

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

Formats the value using the given formatter. Read more
source§

impl Default for EntryMap

source§

fn default() -> EntryMap

Returns the “default value” for a type. Read more
source§

impl Hash for EntryMap

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for EntryMap

source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for EntryMap

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> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> Downcast<T> for T

source§

fn downcast(&self) -> &T

source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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,