Skip to main content

ReadQueryTuple

Trait ReadQueryTuple 

Source
pub trait ReadQueryTuple: QueryTuple {
    type ReadFetch<'table>: Copy;

    // Required methods
    fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>;
    fn read_fetch<'table>(
        table_mask: u64,
        columns: &'table [ColumnSlot],
        element_masks: &[u64; 8],
    ) -> Self::ReadFetch<'table>;
    fn read_changed_newer(
        fetch: Self::ReadFetch<'_>,
        index: usize,
        element_masks: &[u64; 8],
        changed_mask: u64,
        since_tick: u32,
    ) -> bool;
    fn read_added_newer(
        fetch: Self::ReadFetch<'_>,
        index: usize,
        element_masks: &[u64; 8],
        added_mask: u64,
        since_tick: u32,
    ) -> bool;
    fn read_item<'table>(
        fetch: Self::ReadFetch<'table>,
        index: usize,
    ) -> Self::Item<'table>;
    fn join_lookup(
        driver: &DynWorld,
        element_worlds: &[Option<&DynWorld>; 8],
    ) -> Option<([u64; 8], u64)>;
    fn join_read_fetch<'table>(
        table_mask: u64,
        columns: &'table [ColumnSlot],
        element_masks: &[u64; 8],
        element_worlds: &[Option<&DynWorld>; 8],
    ) -> Self::ReadFetch<'table>;
    fn join_read_item<'world>(
        fetch: Self::ReadFetch<'world>,
        element_worlds: &[Option<&'world DynWorld>; 8],
        entity: Entity,
        index: usize,
    ) -> Option<Self::Item<'world>>;
}
Expand description

The read-only half of QueryTuple, tuples of &T and Option<&T> only. Resolves masks without registering, fetches through shared borrows, and hands out items that borrow the world, so results can outlive the iteration.

Required Associated Types§

Source

type ReadFetch<'table>: Copy

Required Methods§

Source

fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>

Source

fn read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], ) -> Self::ReadFetch<'table>

Source

fn read_changed_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], changed_mask: u64, since_tick: u32, ) -> bool

Source

fn read_added_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], added_mask: u64, since_tick: u32, ) -> bool

Source

fn read_item<'table>( fetch: Self::ReadFetch<'table>, index: usize, ) -> Self::Item<'table>

Source

fn join_lookup( driver: &DynWorld, element_worlds: &[Option<&DynWorld>; 8], ) -> Option<([u64; 8], u64)>

Source

fn join_read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], element_worlds: &[Option<&DynWorld>; 8], ) -> Self::ReadFetch<'table>

Source

fn join_read_item<'world>( fetch: Self::ReadFetch<'world>, element_worlds: &[Option<&'world DynWorld>; 8], entity: Entity, index: usize, ) -> Option<Self::Item<'world>>

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<'element, T: Send + Sync + Default + 'static> ReadQueryTuple for &'element T

Source§

type ReadFetch<'table> = <&'element T as ReadQueryElement>::ReadFetch<'table>

Source§

fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>

Source§

fn read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], ) -> Self::ReadFetch<'table>

Source§

fn read_changed_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], changed_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_added_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], added_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_item<'table>( fetch: Self::ReadFetch<'table>, index: usize, ) -> Self::Item<'table>

Source§

fn join_lookup( driver: &DynWorld, element_worlds: &[Option<&DynWorld>; 8], ) -> Option<([u64; 8], u64)>

Source§

fn join_read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], element_worlds: &[Option<&DynWorld>; 8], ) -> Self::ReadFetch<'table>

Source§

fn join_read_item<'world>( fetch: Self::ReadFetch<'world>, element_worlds: &[Option<&'world DynWorld>; 8], entity: Entity, index: usize, ) -> Option<Self::Item<'world>>

Source§

impl<'element, T: Send + Sync + Default + 'static> ReadQueryTuple for Option<&'element T>

Source§

type ReadFetch<'table> = <Option<&'element T> as ReadQueryElement>::ReadFetch<'table>

Source§

fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>

Source§

fn read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], ) -> Self::ReadFetch<'table>

Source§

fn read_changed_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], changed_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_added_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], added_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_item<'table>( fetch: Self::ReadFetch<'table>, index: usize, ) -> Self::Item<'table>

Source§

fn join_lookup( driver: &DynWorld, element_worlds: &[Option<&DynWorld>; 8], ) -> Option<([u64; 8], u64)>

Source§

fn join_read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], element_worlds: &[Option<&DynWorld>; 8], ) -> Self::ReadFetch<'table>

Source§

fn join_read_item<'world>( fetch: Self::ReadFetch<'world>, element_worlds: &[Option<&'world DynWorld>; 8], entity: Entity, index: usize, ) -> Option<Self::Item<'world>>

Source§

impl<A: ReadQueryElement, B: ReadQueryElement, C: ReadQueryElement, D: ReadQueryElement, E: ReadQueryElement, F: ReadQueryElement, G: ReadQueryElement, H: ReadQueryElement> ReadQueryTuple for (A, B, C, D, E, F, G, H)

Source§

type ReadFetch<'table> = (<A as ReadQueryElement>::ReadFetch<'table>, <B as ReadQueryElement>::ReadFetch<'table>, <C as ReadQueryElement>::ReadFetch<'table>, <D as ReadQueryElement>::ReadFetch<'table>, <E as ReadQueryElement>::ReadFetch<'table>, <F as ReadQueryElement>::ReadFetch<'table>, <G as ReadQueryElement>::ReadFetch<'table>, <H as ReadQueryElement>::ReadFetch<'table>)

Source§

fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>

Source§

fn read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], ) -> Self::ReadFetch<'table>

Source§

fn read_changed_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], changed_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_added_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], added_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_item<'table>( fetch: Self::ReadFetch<'table>, index: usize, ) -> Self::Item<'table>

Source§

fn join_lookup( driver: &DynWorld, element_worlds: &[Option<&DynWorld>; 8], ) -> Option<([u64; 8], u64)>

Source§

fn join_read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], element_worlds: &[Option<&DynWorld>; 8], ) -> Self::ReadFetch<'table>

Source§

fn join_read_item<'world>( fetch: Self::ReadFetch<'world>, element_worlds: &[Option<&'world DynWorld>; 8], entity: Entity, index: usize, ) -> Option<Self::Item<'world>>

Source§

impl<A: ReadQueryElement, B: ReadQueryElement, C: ReadQueryElement, D: ReadQueryElement, E: ReadQueryElement, F: ReadQueryElement, G: ReadQueryElement> ReadQueryTuple for (A, B, C, D, E, F, G)

Source§

type ReadFetch<'table> = (<A as ReadQueryElement>::ReadFetch<'table>, <B as ReadQueryElement>::ReadFetch<'table>, <C as ReadQueryElement>::ReadFetch<'table>, <D as ReadQueryElement>::ReadFetch<'table>, <E as ReadQueryElement>::ReadFetch<'table>, <F as ReadQueryElement>::ReadFetch<'table>, <G as ReadQueryElement>::ReadFetch<'table>)

Source§

fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>

Source§

fn read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], ) -> Self::ReadFetch<'table>

Source§

fn read_changed_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], changed_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_added_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], added_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_item<'table>( fetch: Self::ReadFetch<'table>, index: usize, ) -> Self::Item<'table>

Source§

fn join_lookup( driver: &DynWorld, element_worlds: &[Option<&DynWorld>; 8], ) -> Option<([u64; 8], u64)>

Source§

fn join_read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], element_worlds: &[Option<&DynWorld>; 8], ) -> Self::ReadFetch<'table>

Source§

fn join_read_item<'world>( fetch: Self::ReadFetch<'world>, element_worlds: &[Option<&'world DynWorld>; 8], entity: Entity, index: usize, ) -> Option<Self::Item<'world>>

Source§

impl<A: ReadQueryElement, B: ReadQueryElement, C: ReadQueryElement, D: ReadQueryElement, E: ReadQueryElement, F: ReadQueryElement> ReadQueryTuple for (A, B, C, D, E, F)

Source§

type ReadFetch<'table> = (<A as ReadQueryElement>::ReadFetch<'table>, <B as ReadQueryElement>::ReadFetch<'table>, <C as ReadQueryElement>::ReadFetch<'table>, <D as ReadQueryElement>::ReadFetch<'table>, <E as ReadQueryElement>::ReadFetch<'table>, <F as ReadQueryElement>::ReadFetch<'table>)

Source§

fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>

Source§

fn read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], ) -> Self::ReadFetch<'table>

Source§

fn read_changed_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], changed_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_added_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], added_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_item<'table>( fetch: Self::ReadFetch<'table>, index: usize, ) -> Self::Item<'table>

Source§

fn join_lookup( driver: &DynWorld, element_worlds: &[Option<&DynWorld>; 8], ) -> Option<([u64; 8], u64)>

Source§

fn join_read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], element_worlds: &[Option<&DynWorld>; 8], ) -> Self::ReadFetch<'table>

Source§

fn join_read_item<'world>( fetch: Self::ReadFetch<'world>, element_worlds: &[Option<&'world DynWorld>; 8], entity: Entity, index: usize, ) -> Option<Self::Item<'world>>

Source§

impl<A: ReadQueryElement, B: ReadQueryElement, C: ReadQueryElement, D: ReadQueryElement, E: ReadQueryElement> ReadQueryTuple for (A, B, C, D, E)

Source§

type ReadFetch<'table> = (<A as ReadQueryElement>::ReadFetch<'table>, <B as ReadQueryElement>::ReadFetch<'table>, <C as ReadQueryElement>::ReadFetch<'table>, <D as ReadQueryElement>::ReadFetch<'table>, <E as ReadQueryElement>::ReadFetch<'table>)

Source§

fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>

Source§

fn read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], ) -> Self::ReadFetch<'table>

Source§

fn read_changed_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], changed_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_added_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], added_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_item<'table>( fetch: Self::ReadFetch<'table>, index: usize, ) -> Self::Item<'table>

Source§

fn join_lookup( driver: &DynWorld, element_worlds: &[Option<&DynWorld>; 8], ) -> Option<([u64; 8], u64)>

Source§

fn join_read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], element_worlds: &[Option<&DynWorld>; 8], ) -> Self::ReadFetch<'table>

Source§

fn join_read_item<'world>( fetch: Self::ReadFetch<'world>, element_worlds: &[Option<&'world DynWorld>; 8], entity: Entity, index: usize, ) -> Option<Self::Item<'world>>

Source§

impl<A: ReadQueryElement, B: ReadQueryElement, C: ReadQueryElement, D: ReadQueryElement> ReadQueryTuple for (A, B, C, D)

Source§

type ReadFetch<'table> = (<A as ReadQueryElement>::ReadFetch<'table>, <B as ReadQueryElement>::ReadFetch<'table>, <C as ReadQueryElement>::ReadFetch<'table>, <D as ReadQueryElement>::ReadFetch<'table>)

Source§

fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>

Source§

fn read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], ) -> Self::ReadFetch<'table>

Source§

fn read_changed_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], changed_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_added_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], added_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_item<'table>( fetch: Self::ReadFetch<'table>, index: usize, ) -> Self::Item<'table>

Source§

fn join_lookup( driver: &DynWorld, element_worlds: &[Option<&DynWorld>; 8], ) -> Option<([u64; 8], u64)>

Source§

fn join_read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], element_worlds: &[Option<&DynWorld>; 8], ) -> Self::ReadFetch<'table>

Source§

fn join_read_item<'world>( fetch: Self::ReadFetch<'world>, element_worlds: &[Option<&'world DynWorld>; 8], entity: Entity, index: usize, ) -> Option<Self::Item<'world>>

Source§

impl<A: ReadQueryElement, B: ReadQueryElement, C: ReadQueryElement> ReadQueryTuple for (A, B, C)

Source§

type ReadFetch<'table> = (<A as ReadQueryElement>::ReadFetch<'table>, <B as ReadQueryElement>::ReadFetch<'table>, <C as ReadQueryElement>::ReadFetch<'table>)

Source§

fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>

Source§

fn read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], ) -> Self::ReadFetch<'table>

Source§

fn read_changed_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], changed_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_added_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], added_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_item<'table>( fetch: Self::ReadFetch<'table>, index: usize, ) -> Self::Item<'table>

Source§

fn join_lookup( driver: &DynWorld, element_worlds: &[Option<&DynWorld>; 8], ) -> Option<([u64; 8], u64)>

Source§

fn join_read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], element_worlds: &[Option<&DynWorld>; 8], ) -> Self::ReadFetch<'table>

Source§

fn join_read_item<'world>( fetch: Self::ReadFetch<'world>, element_worlds: &[Option<&'world DynWorld>; 8], entity: Entity, index: usize, ) -> Option<Self::Item<'world>>

Source§

impl<A: ReadQueryElement, B: ReadQueryElement> ReadQueryTuple for (A, B)

Source§

type ReadFetch<'table> = (<A as ReadQueryElement>::ReadFetch<'table>, <B as ReadQueryElement>::ReadFetch<'table>)

Source§

fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>

Source§

fn read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], ) -> Self::ReadFetch<'table>

Source§

fn read_changed_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], changed_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_added_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], added_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_item<'table>( fetch: Self::ReadFetch<'table>, index: usize, ) -> Self::Item<'table>

Source§

fn join_lookup( driver: &DynWorld, element_worlds: &[Option<&DynWorld>; 8], ) -> Option<([u64; 8], u64)>

Source§

fn join_read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], element_worlds: &[Option<&DynWorld>; 8], ) -> Self::ReadFetch<'table>

Source§

fn join_read_item<'world>( fetch: Self::ReadFetch<'world>, element_worlds: &[Option<&'world DynWorld>; 8], entity: Entity, index: usize, ) -> Option<Self::Item<'world>>

Source§

impl<A: ReadQueryElement> ReadQueryTuple for (A,)

Source§

type ReadFetch<'table> = (<A as ReadQueryElement>::ReadFetch<'table>,)

Source§

fn lookup_masks(world: &DynWorld) -> Option<([u64; 8], u64)>

Source§

fn read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], ) -> Self::ReadFetch<'table>

Source§

fn read_changed_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], changed_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_added_newer( fetch: Self::ReadFetch<'_>, index: usize, element_masks: &[u64; 8], added_mask: u64, since_tick: u32, ) -> bool

Source§

fn read_item<'table>( fetch: Self::ReadFetch<'table>, index: usize, ) -> Self::Item<'table>

Source§

fn join_lookup( driver: &DynWorld, element_worlds: &[Option<&DynWorld>; 8], ) -> Option<([u64; 8], u64)>

Source§

fn join_read_fetch<'table>( table_mask: u64, columns: &'table [ColumnSlot], element_masks: &[u64; 8], element_worlds: &[Option<&DynWorld>; 8], ) -> Self::ReadFetch<'table>

Source§

fn join_read_item<'world>( fetch: Self::ReadFetch<'world>, element_worlds: &[Option<&'world DynWorld>; 8], entity: Entity, index: usize, ) -> Option<Self::Item<'world>>

Implementors§