pub trait QuerySpec {
type Item<'w>;
type State<'w>;
// Required methods
fn matches(layout: &ArchetypeLayout) -> bool;
fn init_state<'w>(archetype: &'w Archetype) -> Option<Self::State<'w>>;
fn len(state: &Self::State<'_>) -> usize;
fn entity(state: &Self::State<'_>, row: usize) -> Entity;
fn fetch<'w>(state: &Self::State<'w>, row: usize) -> Self::Item<'w>;
}Expand description
Describes an immutable query fetch over matching archetypes.
Required Associated Types§
Required Methods§
fn matches(layout: &ArchetypeLayout) -> bool
fn init_state<'w>(archetype: &'w Archetype) -> Option<Self::State<'w>>
fn len(state: &Self::State<'_>) -> usize
fn entity(state: &Self::State<'_>, row: usize) -> Entity
fn fetch<'w>(state: &Self::State<'w>, row: usize) -> Self::Item<'w>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl<A: Component, B: Component, C: Component, D: Component> QuerySpec for (&A, Option<&B>, Option<&C>, Option<&D>)
impl<A: Component, B: Component, C: Component, D: Component> QuerySpec for (&A, Option<&B>, Option<&C>, Option<&D>)
type Item<'w> = (&'w A, Option<&'w B>, Option<&'w C>, Option<&'w D>)
type State<'w> = (&'w [Entity], &'w Column<A>, Option<&'w Column<B>>, Option<&'w Column<C>>, Option<&'w Column<D>>)
fn matches(layout: &ArchetypeLayout) -> bool
fn init_state<'w>(archetype: &'w Archetype) -> Option<Self::State<'w>>
fn len(state: &Self::State<'_>) -> usize
fn entity(state: &Self::State<'_>, row: usize) -> Entity
fn fetch<'w>(state: &Self::State<'w>, row: usize) -> Self::Item<'w>
Source§impl<A: Component, B: Component, C: Component> QuerySpec for (&A, &B, &C)
impl<A: Component, B: Component, C: Component> QuerySpec for (&A, &B, &C)
type Item<'w> = (&'w A, &'w B, &'w C)
type State<'w> = (&'w [Entity], &'w Column<A>, &'w Column<B>, &'w Column<C>)
fn matches(layout: &ArchetypeLayout) -> bool
fn init_state<'w>(archetype: &'w Archetype) -> Option<Self::State<'w>>
fn len(state: &Self::State<'_>) -> usize
fn entity(state: &Self::State<'_>, row: usize) -> Entity
fn fetch<'w>(state: &Self::State<'w>, row: usize) -> Self::Item<'w>
Source§impl<A: Component, B: Component> QuerySpec for (&A, &B)
impl<A: Component, B: Component> QuerySpec for (&A, &B)
type Item<'w> = (&'w A, &'w B)
type State<'w> = (&'w [Entity], &'w Column<A>, &'w Column<B>)
fn matches(layout: &ArchetypeLayout) -> bool
fn init_state<'w>(archetype: &'w Archetype) -> Option<Self::State<'w>>
fn len(state: &Self::State<'_>) -> usize
fn entity(state: &Self::State<'_>, row: usize) -> Entity
fn fetch<'w>(state: &Self::State<'w>, row: usize) -> Self::Item<'w>
Source§impl<A: Component, B: Component> QuerySpec for (&A, Option<&B>)
impl<A: Component, B: Component> QuerySpec for (&A, Option<&B>)
type Item<'w> = (&'w A, Option<&'w B>)
type State<'w> = (&'w [Entity], &'w Column<A>, Option<&'w Column<B>>)
fn matches(layout: &ArchetypeLayout) -> bool
fn init_state<'w>(archetype: &'w Archetype) -> Option<Self::State<'w>>
fn len(state: &Self::State<'_>) -> usize
fn entity(state: &Self::State<'_>, row: usize) -> Entity
fn fetch<'w>(state: &Self::State<'w>, row: usize) -> Self::Item<'w>
Source§impl<T: Component> QuerySpec for &T
impl<T: Component> QuerySpec for &T
type Item<'w> = &'w T
type State<'w> = (&'w [Entity], &'w Column<T>)
fn matches(layout: &ArchetypeLayout) -> bool
fn init_state<'w>(archetype: &'w Archetype) -> Option<Self::State<'w>>
fn len(state: &Self::State<'_>) -> usize
fn entity(state: &Self::State<'_>, row: usize) -> Entity
fn fetch<'w>(state: &Self::State<'w>, row: usize) -> Self::Item<'w>
Source§impl<T: Component> QuerySpec for Option<&T>
Optional immutable query: matches all archetypes (never filters), returns
Some(&T) when the column is present and None when absent.
impl<T: Component> QuerySpec for Option<&T>
Optional immutable query: matches all archetypes (never filters), returns
Some(&T) when the column is present and None when absent.