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§
Source§impl<T> Access<T>where
T: SparseSetIndex,
impl<T> Access<T>where
T: SparseSetIndex,
Sourcepub 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.
Sourcepub fn has_read(&self, index: T) -> bool
pub fn has_read(&self, index: T) -> bool
Returns true if this can access the element given by index.
Sourcepub 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.
Sourcepub 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).
Sourcepub 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.
Sourcepub fn get_conflicts(&self, other: &Access<T>) -> Vec<T>
pub fn get_conflicts(&self, other: &Access<T>) -> Vec<T>
Returns a vector of elements that the access and other cannot access at the same time.
Sourcepub 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§
Source§impl<T> Default for Access<T>where
T: SparseSetIndex,
impl<T> Default for Access<T>where
T: SparseSetIndex,
impl<T> Eq for Access<T>where
T: Eq + SparseSetIndex,
impl<T> StructuralPartialEq for Access<T>where
T: SparseSetIndex,
Auto Trait Implementations§
impl<T> Freeze for Access<T>
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> UnsafeUnpin for Access<T>
impl<T> UnwindSafe for Access<T>where
T: 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§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.Source§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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self using data from the given World