pub struct Access<T>where
T: SparseSetIndex,{ /* private fields */ }Expand description
Tracks read and write access to specific elements in a collection.
Used internally to ensure soundness during system initialization and execution.
See the is_compatible and get_conflicts functions.
Implementations§
§impl<T> Access<T>where
T: SparseSetIndex,
impl<T> Access<T>where
T: SparseSetIndex,
pub fn grow(&mut self, capacity: usize)
pub fn grow(&mut self, capacity: usize)
Increases the set capacity to the specified amount.
Does nothing if capacity is less than or equal to the current value.
pub fn add_read(&mut self, index: T)
pub fn add_read(&mut self, index: T)
Adds access to the element given by index.
pub fn add_write(&mut self, index: T)
pub fn add_write(&mut self, index: T)
Adds exclusive access to the element given by index.
pub fn has_write(&self, index: T) -> bool
pub fn has_write(&self, index: T) -> bool
Returns true if this can exclusively access the element given by index.
pub fn read_all(&mut self)
pub fn read_all(&mut self)
Sets this as having access to all indexed elements (i.e. &World).
pub fn has_read_all(&self) -> bool
pub fn has_read_all(&self) -> bool
Returns true if this has access to all indexed elements (i.e. &World).
pub fn clear(&mut self)
pub fn clear(&mut self)
Removes all accesses.
pub fn is_compatible(&self, other: &Access<T>) -> bool
pub fn is_compatible(&self, other: &Access<T>) -> bool
Returns true if the access and other can be active at the same time.
Access instances are incompatible if one can write
an element that the other can read or write.
pub fn get_conflicts(&self, other: &Access<T>) -> Vec<T, Global> ⓘ
pub fn get_conflicts(&self, other: &Access<T>) -> Vec<T, Global> ⓘ
Returns a vector of elements that the access and other cannot access at the same time.
pub fn reads_and_writes(&self) -> impl Iterator<Item = T>
pub fn reads_and_writes(&self) -> impl Iterator<Item = T>
Returns the indices of the elements this has access to.
Trait Implementations§
§impl<T> Clone for Access<T>where
T: Clone + SparseSetIndex,
impl<T> Clone for Access<T>where
T: Clone + SparseSetIndex,
§impl<T> Debug for Access<T>where
T: SparseSetIndex + Debug,
impl<T> Debug for Access<T>where
T: SparseSetIndex + Debug,
§impl<T> Default for Access<T>where
T: SparseSetIndex,
impl<T> Default for Access<T>where
T: SparseSetIndex,
§impl<T> PartialEq<Access<T>> for Access<T>where
T: PartialEq<T> + SparseSetIndex,
impl<T> PartialEq<Access<T>> for Access<T>where
T: PartialEq<T> + SparseSetIndex,
impl<T> Eq for Access<T>where
T: Eq + SparseSetIndex,
impl<T> StructuralEq for Access<T>where
T: SparseSetIndex,
impl<T> StructuralPartialEq for Access<T>where
T: SparseSetIndex,
Auto Trait Implementations§
impl<T> RefUnwindSafe for Access<T>where
T: RefUnwindSafe,
impl<T> Send for Access<T>where
T: Send,
impl<T> Sync for Access<T>where
T: Sync,
impl<T> Unpin for Access<T>where
T: Unpin,
impl<T> UnwindSafe for Access<T>where
T: UnwindSafe,
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T ShaderType for self. When used in AsBindGroup
derives, it is safe to assume that all images in self exist. Read more§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s. Read more§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s. Read moresource§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self using data from the given World