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_any_read(&self) -> bool
pub fn has_any_read(&self) -> bool
Returns true
if this can access anything.
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 has_any_write(&self) -> bool
pub fn has_any_write(&self) -> bool
Returns true
if this accesses anything mutably.
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 write_all(&mut self)
pub fn write_all(&mut self)
Sets this as having mutable access to all indexed elements (i.e. EntityMut
).
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 has_write_all(&self) -> bool
pub fn has_write_all(&self) -> bool
Returns true
if this has write access to all indexed elements (i.e. EntityMut
).
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> 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.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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, 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
.§fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§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.§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.§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,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§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,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§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<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§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
.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<R, P> ReadPrimitive<R> for Pwhere
R: Read + ReadEndian<P>,
P: Default,
impl<R, P> ReadPrimitive<R> for Pwhere R: Read + ReadEndian<P>, P: Default,
source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.