Skip to main content

IterQueryData

Trait IterQueryData 

pub unsafe trait IterQueryData: QueryData { }
Expand description

A QueryData for which instances may be alive for different entities concurrently.

Rust Iterators don’t connect the lifetime in Iterator::next to anything in Iterator::Item, so later calls don’t invalidate earlier items. This is how methods like Iterator::collect work. It is therefore unsound to offer an Iterator for a QueryData for which only one instance may be alive concurrently.

To iterate over a QueryData that does not implement IterQueryData, use the QueryIter::fetch_next() method.

For QueryData that implement this trait, QueryData::fetch may be called for one entity while an item is still alive for a different entity.

All SingleEntityQueryData types are IterQueryData. They only access data on the current entity, the one passed to QueryData::fetch, so the access for different entities will always be disjoint.

All ReadOnlyQueryData types are IterQueryData. Even if they access data on entities other than the current one, that access is read-only and it’s sound for it to alias.

Queries with a nested query that performs mutable access should generally not be IterQueryData, although they can be if they have a way to prove that all accesses through the nested query are disjoint.

§Safety

This QueryData must not perform conflicting access when fetched for different entities.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl IterQueryData for ()

§

impl<F0, F1> IterQueryData for (F0, F1)

§

impl<F0, F1, F2> IterQueryData for (F0, F1, F2)

§

impl<F0, F1, F2, F3> IterQueryData for (F0, F1, F2, F3)

§

impl<F0, F1, F2, F3, F4> IterQueryData for (F0, F1, F2, F3, F4)

§

impl<F0, F1, F2, F3, F4, F5> IterQueryData for (F0, F1, F2, F3, F4, F5)

§

impl<F0, F1, F2, F3, F4, F5, F6> IterQueryData for (F0, F1, F2, F3, F4, F5, F6)

§

impl<F0, F1, F2, F3, F4, F5, F6, F7> IterQueryData for (F0, F1, F2, F3, F4, F5, F6, F7)

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8> IterQueryData for (F0, F1, F2, F3, F4, F5, F6, F7, F8)

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9> IterQueryData for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9)

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10> IterQueryData for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10)

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11> IterQueryData for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11)

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12> IterQueryData for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12)

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13> IterQueryData for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13)

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14> IterQueryData for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14)

§

impl<F> IterQueryData for (F,)
where F: IterQueryData,

§

impl<T> IterQueryData for Option<T>
where T: IterQueryData,

§

impl<T> IterQueryData for &T
where T: Component,

§

impl<T> IterQueryData for &mut T
where T: Component<Mutability = Mutable>,

§

impl<T> IterQueryData for PhantomData<T>
where T: ?Sized,

Implementors§

§

impl IterQueryData for &Archetype

Source§

impl IterQueryData for EntityInitQuery
where &'static EntityId: for<'__a> IterQueryData, &'static UniqueId: for<'__a> IterQueryData, &'static EntityKind: for<'__a> IterQueryData, &'static Look: for<'__a> IterQueryData, &'static HeadYaw: for<'__a> IterQueryData, &'static OnGround: for<'__a> IterQueryData, &'static ObjectData: for<'__a> IterQueryData, &'static Velocity: for<'__a> IterQueryData, &'static TrackedData: for<'__a> IterQueryData,

Source§

impl IterQueryData for UpdateEntityQuery
where &'static EntityId: for<'__a> IterQueryData, &'static Position: for<'__a> IterQueryData, &'static OldPosition: for<'__a> IterQueryData, &'static EntityLayerId: for<'__a> IterQueryData, &'static OldEntityLayerId: for<'__a> IterQueryData, Ref<'static, Look>: for<'__a> IterQueryData, Ref<'static, HeadYaw>: for<'__a> IterQueryData, &'static OnGround: for<'__a> IterQueryData, Ref<'static, Velocity>: for<'__a> IterQueryData, &'static TrackedData: for<'__a> IterQueryData, &'static EntityStatuses: for<'__a> IterQueryData, &'static EntityAnimations: for<'__a> IterQueryData, Option<&'static TrackedEntityAttributes>: for<'__a> IterQueryData,

§

impl IterQueryData for AnyOf<()>

Source§

impl IterQueryData for ClientSpawnQuery
where &'static mut IsHardcore: for<'__a> IterQueryData, &'static mut GameMode: for<'__a> IterQueryData, &'static mut PrevGameMode: for<'__a> IterQueryData, &'static mut HashedSeed: for<'__a> IterQueryData, &'static mut ViewDistance: for<'__a> IterQueryData, &'static mut ReducedDebugInfo: for<'__a> IterQueryData, &'static mut HasRespawnScreen: for<'__a> IterQueryData, &'static mut IsDebug: for<'__a> IterQueryData, &'static mut IsFlat: for<'__a> IterQueryData, &'static mut DeathLocation: for<'__a> IterQueryData, &'static mut PortalCooldown: for<'__a> IterQueryData,

Source§

impl IterQueryData for ClientSpawnQueryReadOnly

§

impl IterQueryData for Entity

§

impl IterQueryData for EntityMut<'_>

§

impl IterQueryData for EntityRef<'_>

§

impl IterQueryData for NameOrEntity
where Option<&'static Name>: for<'__a> IterQueryData, Entity: for<'__a> IterQueryData,

Source§

impl IterQueryData for OldView
where &'static OldPosition: for<'__a> IterQueryData, &'static OldViewDistance: for<'__a> IterQueryData,

Source§

impl IterQueryData for View
where &'static Position: for<'__a> IterQueryData, &'static ViewDistance: for<'__a> IterQueryData,

§

impl IterQueryData for EntityLocation

§

impl IterQueryData for FilteredEntityMut<'_, '_>

§

impl IterQueryData for FilteredEntityRef<'_, '_>

§

impl IterQueryData for SpawnDetails

§

impl<'__w, T> IterQueryData for Ref<'__w, T>
where T: Component,

§

impl<B> IterQueryData for EntityMutExcept<'_, '_, B>
where B: Bundle,

§

impl<B> IterQueryData for EntityRefExcept<'_, '_, B>
where B: Bundle,

§

impl<D, F> IterQueryData for NestedQuery<D, F>

§

impl<F0, F1> IterQueryData for AnyOf<(F0, F1)>

§

impl<F0, F1, F2> IterQueryData for AnyOf<(F0, F1, F2)>

§

impl<F0, F1, F2, F3> IterQueryData for AnyOf<(F0, F1, F2, F3)>

§

impl<F0, F1, F2, F3, F4> IterQueryData for AnyOf<(F0, F1, F2, F3, F4)>

§

impl<F0, F1, F2, F3, F4, F5> IterQueryData for AnyOf<(F0, F1, F2, F3, F4, F5)>

§

impl<F0, F1, F2, F3, F4, F5, F6> IterQueryData for AnyOf<(F0, F1, F2, F3, F4, F5, F6)>

§

impl<F0, F1, F2, F3, F4, F5, F6, F7> IterQueryData for AnyOf<(F0, F1, F2, F3, F4, F5, F6, F7)>

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8> IterQueryData for AnyOf<(F0, F1, F2, F3, F4, F5, F6, F7, F8)>

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9> IterQueryData for AnyOf<(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9)>

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10> IterQueryData for AnyOf<(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10)>

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11> IterQueryData for AnyOf<(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11)>

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12> IterQueryData for AnyOf<(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12)>

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13> IterQueryData for AnyOf<(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13)>

§

impl<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14> IterQueryData for AnyOf<(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14)>

§

impl<F> IterQueryData for AnyOf<(F,)>
where F: IterQueryData,

§

impl<T> IterQueryData for Has<T>
where T: Component,

§

impl<T> IterQueryData for Mut<'_, T>
where T: Component<Mutability = Mutable>,