Struct Access
pub struct Access { /* 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 Access
impl Access
pub fn add_component_read(&mut self, index: ComponentId)
👎Deprecated since 0.19.0: use Access::add_read
pub fn add_component_read(&mut self, index: ComponentId)
use Access::add_read
Adds access to the component given by index.
pub fn add_read(&mut self, index: ComponentId)
pub fn add_read(&mut self, index: ComponentId)
Adds access to the component given by index.
pub fn add_component_write(&mut self, index: ComponentId)
👎Deprecated since 0.19.0: use Access::add_write
pub fn add_component_write(&mut self, index: ComponentId)
use Access::add_write
Adds exclusive access to the component given by index.
pub fn add_write(&mut self, index: ComponentId)
pub fn add_write(&mut self, index: ComponentId)
Adds exclusive access to the component given by index.
pub fn add_resource_read(&mut self, index: ComponentId)
👎Deprecated since 0.19.0: Call FilteredAccessSet::add_resource_read. If this is called in a WorldQuery impl, then you will need to implement init_nested_access to modify the FilteredAccessSet.
pub fn add_resource_read(&mut self, index: ComponentId)
Call FilteredAccessSet::add_resource_read. If this is called in a WorldQuery impl, then you will need to implement init_nested_access to modify the FilteredAccessSet.
Adds access to the resource given by index.
pub fn add_resource_write(&mut self, index: ComponentId)
👎Deprecated since 0.19.0: Call FilteredAccessSet::add_resource_write. If this is called in a WorldQuery impl, then you will need to implement init_nested_access to modify the FilteredAccessSet.
pub fn add_resource_write(&mut self, index: ComponentId)
Call FilteredAccessSet::add_resource_write. If this is called in a WorldQuery impl, then you will need to implement init_nested_access to modify the FilteredAccessSet.
Adds exclusive access to the resource given by index.
pub fn remove_component_read(&mut self, index: ComponentId)
👎Deprecated since 0.19.0: use Access::remove_read
pub fn remove_component_read(&mut self, index: ComponentId)
use Access::remove_read
Removes both read and write access to the component given by index.
pub fn remove_read(&mut self, index: ComponentId)
pub fn remove_read(&mut self, index: ComponentId)
Removes both read and write access to the component given by index.
Because this method corresponds to the set difference operator ∖, it can
create complicated logical formulas that you should verify correctness
of. For example, A ∪ (B ∖ A) isn’t equivalent to (A ∪ B) ∖ A, so you
can’t replace a call to remove_component_read followed by a call to
extend with a call to extend followed by a call to
remove_read.
pub fn remove_component_write(&mut self, index: ComponentId)
👎Deprecated since 0.19.0: use Access::remove_write
pub fn remove_component_write(&mut self, index: ComponentId)
use Access::remove_write
Removes write access to the component given by index.
pub fn remove_write(&mut self, index: ComponentId)
pub fn remove_write(&mut self, index: ComponentId)
Removes write access to the component given by index.
Because this method corresponds to the set difference operator ∖, it can
create complicated logical formulas that you should verify correctness
of. For example, A ∪ (B ∖ A) isn’t equivalent to (A ∪ B) ∖ A, so you
can’t replace a call to remove_write followed by a call to
extend with a call to extend followed by a call to
remove_write.
pub fn add_archetypal(&mut self, index: ComponentId)
pub fn add_archetypal(&mut self, index: ComponentId)
pub fn has_component_read(&self, index: ComponentId) -> bool
👎Deprecated since 0.19.0: use Access::has_read
pub fn has_component_read(&self, index: ComponentId) -> bool
use Access::has_read
Returns true if this can access the component given by index.
pub fn has_read(&self, index: ComponentId) -> bool
pub fn has_read(&self, index: ComponentId) -> bool
Returns true if this can access the component given by index.
pub fn has_any_component_read(&self) -> bool
👎Deprecated since 0.19.0: use Access::has_any_read
pub fn has_any_component_read(&self) -> bool
use Access::has_any_read
Returns true if this can access any component.
pub fn has_any_read(&self) -> bool
pub fn has_any_read(&self) -> bool
Returns true if this can access any component.
pub fn has_component_write(&self, index: ComponentId) -> bool
👎Deprecated since 0.19.0: use Access::has_write
pub fn has_component_write(&self, index: ComponentId) -> bool
use Access::has_write
Returns true if this can exclusively access the component given by index.
pub fn has_write(&self, index: ComponentId) -> bool
pub fn has_write(&self, index: ComponentId) -> bool
Returns true if this can exclusively access the component given by index.
pub fn has_any_component_write(&self) -> bool
👎Deprecated since 0.19.0: use Access::has_any_write
pub fn has_any_component_write(&self) -> bool
use Access::has_any_write
Returns true if this accesses any component mutably.
pub fn has_any_write(&self) -> bool
pub fn has_any_write(&self) -> bool
Returns true if this accesses any component mutably.
pub fn has_resource_read(&self, index: ComponentId) -> bool
👎Deprecated since 0.19.0: use Access::has_read
pub fn has_resource_read(&self, index: ComponentId) -> bool
use Access::has_read
Returns true if this can access the resource given by index.
pub fn has_any_resource_read(&self) -> bool
👎Deprecated since 0.19.0: use Access::has_any_read
pub fn has_any_resource_read(&self) -> bool
use Access::has_any_read
Returns true if this can access any resource.
pub fn has_resource_write(&self, index: ComponentId) -> bool
👎Deprecated since 0.19.0: use Access::has_write
pub fn has_resource_write(&self, index: ComponentId) -> bool
use Access::has_write
Returns true if this can exclusively access the resource given by index.
pub fn has_any_resource_write(&self) -> bool
👎Deprecated since 0.19.0: use Access::has_any_write
pub fn has_any_resource_write(&self) -> bool
use Access::has_any_write
Returns true if this accesses any resource mutably.
pub fn has_archetypal(&self, index: ComponentId) -> bool
pub fn has_archetypal(&self, index: ComponentId) -> bool
Returns true if this has an archetypal (indirect) access to the component given by index.
This is a component whose value is not accessed (and thus will never cause conflicts), but whose presence in an archetype may affect query results.
Currently, this is only used for Has<T>.
pub fn read_all_components(&mut self)
👎Deprecated since 0.19.0: use Access::read_all
pub fn read_all_components(&mut self)
use Access::read_all
Sets this as having access to all components (i.e. EntityRef).
pub fn read_all(&mut self)
pub fn read_all(&mut self)
Sets this as having access to all components (i.e. EntityRef and &World).
pub fn write_all_components(&mut self)
👎Deprecated since 0.19.0: use Access::write_all
pub fn write_all_components(&mut self)
use Access::write_all
Sets this as having mutable access to all components (i.e. EntityMut and &mut World).
pub fn write_all(&mut self)
pub fn write_all(&mut self)
Sets this as having mutable access to all components (i.e. EntityMut and &mut World).
pub fn has_read_all_components(&self) -> bool
👎Deprecated since 0.19.0: use Access::has_read_all
pub fn has_read_all_components(&self) -> bool
use Access::has_read_all
Returns true if this has access to all components (i.e. EntityRef and &World).
pub fn has_read_all(&self) -> bool
pub fn has_read_all(&self) -> bool
Returns true if this has access to all components (i.e. EntityRef and &World).
pub fn has_write_all_components(&self) -> bool
👎Deprecated since 0.19.0: use Access::has_write_all
pub fn has_write_all_components(&self) -> bool
use Access::has_write_all
Returns true if this has write access to all components (i.e. EntityMut and &mut World).
pub fn has_write_all(&self) -> bool
pub fn has_write_all(&self) -> bool
Returns true if this has write access to all components (i.e. EntityMut and &mut World).
pub fn clear_writes(&mut self)
pub fn clear_writes(&mut self)
Removes all writes.
pub fn clear(&mut self)
pub fn clear(&mut self)
Removes all accesses.
pub fn remove_conflicting_access(&mut self, other: &Access)
pub fn remove_conflicting_access(&mut self, other: &Access)
Removes any access from self that would conflict with other.
This removes any reads and writes for any component written by other,
and removes any writes for any component read by other.
pub fn is_components_compatible(&self, other: &Access) -> bool
👎Deprecated since 0.19.0: use Access::is_compatible
pub fn is_components_compatible(&self, other: &Access) -> bool
use Access::is_compatible
Returns true if the access and other can be active at the same time.
pub fn is_compatible(&self, other: &Access) -> bool
pub fn is_compatible(&self, other: &Access) -> 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 is_subset_components(&self, other: &Access) -> bool
👎Deprecated since 0.19.0: use Access::is_subset
pub fn is_subset_components(&self, other: &Access) -> bool
use Access::is_subset
Returns true if the set is a subset of another, i.e. other contains
at least all the values in self.
pub fn is_subset(&self, other: &Access) -> bool
pub fn is_subset(&self, other: &Access) -> bool
Returns true if the set is a subset of another, i.e. other contains
at least all the values in self.
pub fn get_conflicts(&self, other: &Access) -> AccessConflicts
pub fn get_conflicts(&self, other: &Access) -> AccessConflicts
Returns a vector of elements that the access and other cannot access at the same time.
pub fn archetypal(&self) -> &ComponentIdSet
pub fn archetypal(&self) -> &ComponentIdSet
Returns the indices of the components that this has an archetypal access to.
These are components whose values are not accessed (and thus will never cause conflicts), but whose presence in an archetype may affect query results.
Currently, this is only used for Has<T>.
pub fn try_reads_and_writes(
&self,
) -> Result<&ComponentIdSet, UnboundedAccessError>
pub fn try_reads_and_writes( &self, ) -> Result<&ComponentIdSet, UnboundedAccessError>
Returns the set of components with read or write access, or an error if the access is unbounded.
pub fn try_writes(&self) -> Result<&ComponentIdSet, UnboundedAccessError>
pub fn try_writes(&self) -> Result<&ComponentIdSet, UnboundedAccessError>
Returns the set of components with write access, or an error if the access is unbounded.
pub fn try_iter_component_access(
&self,
) -> Result<impl Iterator<Item = ComponentAccessKind>, UnboundedAccessError>
👎Deprecated since 0.19.0: use Access::try_iter_access
pub fn try_iter_component_access( &self, ) -> Result<impl Iterator<Item = ComponentAccessKind>, UnboundedAccessError>
use Access::try_iter_access
Returns an iterator over the component IDs and their ComponentAccessKind.
pub fn try_iter_access(
&self,
) -> Result<impl Iterator<Item = ComponentAccessKind>, UnboundedAccessError>
pub fn try_iter_access( &self, ) -> Result<impl Iterator<Item = ComponentAccessKind>, UnboundedAccessError>
Returns an iterator over the component IDs and their ComponentAccessKind.
Returns Err(UnboundedAccess) if the access is unbounded.
This typically occurs when an Access is marked as accessing all
components, and then adding exceptions.
§Examples
let mut access = Access::default();
access.add_read(ComponentId::new(1));
access.add_write(ComponentId::new(2));
access.add_archetypal(ComponentId::new(3));
let result = access
.try_iter_access()
.map(Iterator::collect::<Vec<_>>);
assert_eq!(
result,
Ok(vec![
ComponentAccessKind::Shared(ComponentId::new(1)),
ComponentAccessKind::Exclusive(ComponentId::new(2)),
ComponentAccessKind::Archetypal(ComponentId::new(3)),
]),
);Trait Implementations§
impl Eq for Access
impl StructuralPartialEq for Access
Auto Trait Implementations§
impl Freeze for Access
impl RefUnwindSafe for Access
impl Send for Access
impl Sync for Access
impl Unpin for Access
impl UnsafeUnpin for Access
impl UnwindSafe for Access
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,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§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>, which 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<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FromTemplate for T
impl<T> FromTemplate for T
§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
Creates Self using default().
§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<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.§impl<T> Template for T
impl<T> Template for T
§fn build_template(
&self,
_context: &mut TemplateContext<'_, '_>,
) -> Result<<T as Template>::Output, BevyError>
fn build_template( &self, _context: &mut TemplateContext<'_, '_>, ) -> Result<<T as Template>::Output, BevyError>
entity context to produce a Template::Output.§fn clone_template(&self) -> T
fn clone_template(&self) -> T
Clone.