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§
Source§impl Access
impl Access
Sourcepub 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.
Sourcepub fn add_read(&mut self, index: ComponentId)
pub fn add_read(&mut self, index: ComponentId)
Adds access to the component given by index.
Sourcepub 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.
Sourcepub fn add_write(&mut self, index: ComponentId)
pub fn add_write(&mut self, index: ComponentId)
Adds exclusive access to the component given by index.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub fn add_archetypal(&mut self, index: ComponentId)
pub fn add_archetypal(&mut self, index: ComponentId)
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub fn has_any_read(&self) -> bool
pub fn has_any_read(&self) -> bool
Returns true if this can access any component.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub fn has_any_write(&self) -> bool
pub fn has_any_write(&self) -> bool
Returns true if this accesses any component mutably.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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>.
Sourcepub 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).
Sourcepub fn read_all(&mut self)
pub fn read_all(&mut self)
Sets this as having access to all components (i.e. EntityRef and &World).
Sourcepub 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).
Sourcepub 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).
Sourcepub 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).
Sourcepub 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).
Sourcepub 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).
Sourcepub 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).
Sourcepub fn clear_writes(&mut self)
pub fn clear_writes(&mut self)
Removes all writes.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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>.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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> ConditionalSend for Twhere
T: Send,
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>, which can then be
downcast into Box<dyn 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>, which 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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§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 Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FromTemplate for T
impl<T> FromTemplate 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
Creates Self using default().
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Source§impl<T> Template for T
impl<T> Template for T
Source§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.Source§fn clone_template(&self) -> T
fn clone_template(&self) -> T
Clone.