pub struct FilteredAccess { /* private fields */ }
Expand description
An Access
that has been filtered to include and exclude certain combinations of elements.
Used internally to statically check if queries are disjoint.
Subtle: a read
or write
in access
should not be considered to imply a
with
access.
For example consider Query<Option<&T>>
this only has a read
of T
as doing
otherwise would allow for queries to be considered disjoint when they shouldn’t:
Query<(&mut T, Option<&U>)>
read/writeT
, readU
, withU
Query<&mut T, Without<U>>
read/writeT
, withoutU
from this we could reasonably conclude that the queries are disjoint but they aren’t.
In order to solve this the actual access that Query<(&mut T, Option<&U>)>
has
is read/write T
, read U
. It must still have a read U
access otherwise the following
queries would be incorrectly considered disjoint:
Query<&mut T>
read/writeT
Query<Option<&T>>
accesses nothing
See comments the WorldQuery
impls of AnyOf
/Option
/Or
for more information.
Implementations§
Source§impl FilteredAccess
impl FilteredAccess
Sourcepub fn matches_everything() -> FilteredAccess
pub fn matches_everything() -> FilteredAccess
Returns a FilteredAccess
which has no access and matches everything.
This is the equivalent of a TRUE
logic atom.
Sourcepub fn matches_nothing() -> FilteredAccess
pub fn matches_nothing() -> FilteredAccess
Returns a FilteredAccess
which has no access and matches nothing.
This is the equivalent of a FALSE
logic atom.
Sourcepub fn access_mut(&mut self) -> &mut Access
pub fn access_mut(&mut self) -> &mut Access
Returns a mutable reference to the underlying unfiltered access.
Sourcepub fn add_component_read(&mut self, index: ComponentId)
pub fn add_component_read(&mut self, index: ComponentId)
Adds access to the component given by index
.
Sourcepub fn add_component_write(&mut self, index: ComponentId)
pub fn add_component_write(&mut self, index: ComponentId)
Adds exclusive access to the component given by index
.
Sourcepub fn add_resource_read(&mut self, index: ComponentId)
pub fn add_resource_read(&mut self, index: ComponentId)
Adds access to the resource given by index
.
Sourcepub fn add_resource_write(&mut self, index: ComponentId)
pub fn add_resource_write(&mut self, index: ComponentId)
Adds exclusive access to the resource given by index
.
Sourcepub fn and_with(&mut self, index: ComponentId)
pub fn and_with(&mut self, index: ComponentId)
Adds a With
filter: corresponds to a conjunction (AND) operation.
Suppose we begin with Or<(With<A>, With<B>)>
, which is represented by an array of two AccessFilter
instances.
Adding AND With<C>
via this method transforms it into the equivalent of Or<((With<A>, With<C>), (With<B>, With<C>))>
.
Sourcepub fn and_without(&mut self, index: ComponentId)
pub fn and_without(&mut self, index: ComponentId)
Adds a Without
filter: corresponds to a conjunction (AND) operation.
Suppose we begin with Or<(With<A>, With<B>)>
, which is represented by an array of two AccessFilter
instances.
Adding AND Without<C>
via this method transforms it into the equivalent of Or<((With<A>, Without<C>), (With<B>, Without<C>))>
.
Sourcepub fn append_or(&mut self, other: &FilteredAccess)
pub fn append_or(&mut self, other: &FilteredAccess)
Appends an array of filters: corresponds to a disjunction (OR) operation.
As the underlying array of filters represents a disjunction,
where each element (AccessFilters
) represents a conjunction,
we can simply append to the array.
Sourcepub fn extend_access(&mut self, other: &FilteredAccess)
pub fn extend_access(&mut self, other: &FilteredAccess)
Adds all of the accesses from other
to self
.
Sourcepub fn is_compatible(&self, other: &FilteredAccess) -> bool
pub fn is_compatible(&self, other: &FilteredAccess) -> bool
Returns true
if this and other
can be active at the same time.
Sourcepub fn get_conflicts(&self, other: &FilteredAccess) -> AccessConflicts
pub fn get_conflicts(&self, other: &FilteredAccess) -> AccessConflicts
Returns a vector of elements that this and other
cannot access at the same time.
Sourcepub fn extend(&mut self, other: &FilteredAccess)
pub fn extend(&mut self, other: &FilteredAccess)
Adds all access and filters from other
.
Corresponds to a conjunction operation (AND) for filters.
Extending Or<(With<A>, Without<B>)>
with Or<(With<C>, Without<D>)>
will result in
Or<((With<A>, With<C>), (With<A>, Without<D>), (Without<B>, With<C>), (Without<B>, Without<D>))>
.
Sourcepub fn read_all(&mut self)
pub fn read_all(&mut self)
Sets the underlying unfiltered access as having access to all indexed elements.
Sourcepub fn write_all(&mut self)
pub fn write_all(&mut self)
Sets the underlying unfiltered access as having mutable access to all indexed elements.
Sourcepub fn read_all_components(&mut self)
pub fn read_all_components(&mut self)
Sets the underlying unfiltered access as having access to all components.
Sourcepub fn write_all_components(&mut self)
pub fn write_all_components(&mut self)
Sets the underlying unfiltered access as having mutable access to all components.
Sourcepub fn is_subset(&self, other: &FilteredAccess) -> bool
pub fn is_subset(&self, other: &FilteredAccess) -> bool
Returns true
if the set is a subset of another, i.e. other
contains
at least all the values in self
.
Sourcepub fn with_filters(&self) -> impl Iterator<Item = ComponentId>
pub fn with_filters(&self) -> impl Iterator<Item = ComponentId>
Returns the indices of the elements that this access filters for.
Sourcepub fn without_filters(&self) -> impl Iterator<Item = ComponentId>
pub fn without_filters(&self) -> impl Iterator<Item = ComponentId>
Returns the indices of the elements that this access filters out.
Sourcepub fn contains(&self, index: ComponentId) -> bool
pub fn contains(&self, index: ComponentId) -> bool
Returns true if the index is used by this FilteredAccess
in filters or archetypal access.
This includes most ways to access a component, but notably excludes EntityRef
and EntityMut
along with anything inside Option<T>
.
Trait Implementations§
Source§impl Clone for FilteredAccess
impl Clone for FilteredAccess
Source§fn clone(&self) -> FilteredAccess
fn clone(&self) -> FilteredAccess
Source§fn clone_from(&mut self, source: &FilteredAccess)
fn clone_from(&mut self, source: &FilteredAccess)
source
. Read moreSource§impl Debug for FilteredAccess
impl Debug for FilteredAccess
Source§impl Default for FilteredAccess
impl Default for FilteredAccess
Source§fn default() -> FilteredAccess
fn default() -> FilteredAccess
Source§impl From<FilteredAccess> for FilteredAccessSet
impl From<FilteredAccess> for FilteredAccessSet
Source§fn from(filtered_access: FilteredAccess) -> FilteredAccessSet
fn from(filtered_access: FilteredAccess) -> FilteredAccessSet
Source§impl PartialEq for FilteredAccess
impl PartialEq for FilteredAccess
impl Eq for FilteredAccess
impl StructuralPartialEq for FilteredAccess
Auto Trait Implementations§
impl Freeze for FilteredAccess
impl RefUnwindSafe for FilteredAccess
impl Send for FilteredAccess
impl Sync for FilteredAccess
impl Unpin for FilteredAccess
impl UnwindSafe for FilteredAccess
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> 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
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>
, 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> 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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync 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> 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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more