[]Trait acute_ecs::query::View

pub trait View<'a>: 'static + Send + Sync {
    type Iter: 'a + Iterator;
    fn fetch(
        archetype: &'a ArchetypeData,
        chunk: &'a ComponentStorage,
        chunk_index: ChunkIndex,
        set_index: SetIndex
    ) -> Self::Iter;
fn validate() -> bool;
fn validate_access(access: &ComponentAccess<'_>) -> bool;
fn reads<T>() -> bool
    where
        T: Component
;
fn writes<T>() -> bool
    where
        T: Component
;
fn requires_permissions() -> Permissions<ComponentTypeId>; }

A type which can fetch a strongly-typed view of the data contained within a chunk.

Associated Types

type Iter: 'a + Iterator

The iterator over the chunk data.

Loading content...

Required methods

fn fetch(
    archetype: &'a ArchetypeData,
    chunk: &'a ComponentStorage,
    chunk_index: ChunkIndex,
    set_index: SetIndex
) -> Self::Iter

Pulls data out of a chunk.

fn validate() -> bool

Validates that the view does not break any component borrowing rules.

fn validate_access(access: &ComponentAccess<'_>) -> bool

Determines if the given component access includes all permissions required by the view.

fn reads<T>() -> bool where
    T: Component

Determines if the view reads the specified data type.

fn writes<T>() -> bool where
    T: Component

Determines if the view writes to the specified data type.

fn requires_permissions() -> Permissions<ComponentTypeId>

Returns the set of permissions required by the view.

Loading content...

Implementations on Foreign Types

impl<'a, A, B, C, D, E, F, G, H> View<'a> for (A, B, C, D, E, F, G, H) where
    A: View<'a> + ViewElement,
    B: View<'a> + ViewElement,
    C: View<'a> + ViewElement,
    D: View<'a> + ViewElement,
    E: View<'a> + ViewElement,
    F: View<'a> + ViewElement,
    G: View<'a> + ViewElement,
    H: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter, <B as View<'a>>::Iter, <C as View<'a>>::Iter, <D as View<'a>>::Iter, <E as View<'a>>::Iter, <F as View<'a>>::Iter, <G as View<'a>>::Iter, <H as View<'a>>::Iter)>

impl<'a, A, B, C> View<'a> for (A, B, C) where
    A: View<'a> + ViewElement,
    B: View<'a> + ViewElement,
    C: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter, <B as View<'a>>::Iter, <C as View<'a>>::Iter)>

impl<'a, A, B, C, D, E, F> View<'a> for (A, B, C, D, E, F) where
    A: View<'a> + ViewElement,
    B: View<'a> + ViewElement,
    C: View<'a> + ViewElement,
    D: View<'a> + ViewElement,
    E: View<'a> + ViewElement,
    F: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter, <B as View<'a>>::Iter, <C as View<'a>>::Iter, <D as View<'a>>::Iter, <E as View<'a>>::Iter, <F as View<'a>>::Iter)>

impl<'a, A, B, C, D, E> View<'a> for (A, B, C, D, E) where
    A: View<'a> + ViewElement,
    B: View<'a> + ViewElement,
    C: View<'a> + ViewElement,
    D: View<'a> + ViewElement,
    E: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter, <B as View<'a>>::Iter, <C as View<'a>>::Iter, <D as View<'a>>::Iter, <E as View<'a>>::Iter)>

impl<'a, A, B, C, D> View<'a> for (A, B, C, D) where
    A: View<'a> + ViewElement,
    B: View<'a> + ViewElement,
    C: View<'a> + ViewElement,
    D: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter, <B as View<'a>>::Iter, <C as View<'a>>::Iter, <D as View<'a>>::Iter)>

impl<'a, A, B, C, D, E, F, G, H, I, J, K> View<'a> for (A, B, C, D, E, F, G, H, I, J, K) where
    A: View<'a> + ViewElement,
    B: View<'a> + ViewElement,
    C: View<'a> + ViewElement,
    D: View<'a> + ViewElement,
    E: View<'a> + ViewElement,
    F: View<'a> + ViewElement,
    G: View<'a> + ViewElement,
    H: View<'a> + ViewElement,
    I: View<'a> + ViewElement,
    J: View<'a> + ViewElement,
    K: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter, <B as View<'a>>::Iter, <C as View<'a>>::Iter, <D as View<'a>>::Iter, <E as View<'a>>::Iter, <F as View<'a>>::Iter, <G as View<'a>>::Iter, <H as View<'a>>::Iter, <I as View<'a>>::Iter, <J as View<'a>>::Iter, <K as View<'a>>::Iter)>

impl<'a, A> View<'a> for (A,) where
    A: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter,)>

impl<'a, A, B, C, D, E, F, G, H, I, J> View<'a> for (A, B, C, D, E, F, G, H, I, J) where
    A: View<'a> + ViewElement,
    B: View<'a> + ViewElement,
    C: View<'a> + ViewElement,
    D: View<'a> + ViewElement,
    E: View<'a> + ViewElement,
    F: View<'a> + ViewElement,
    G: View<'a> + ViewElement,
    H: View<'a> + ViewElement,
    I: View<'a> + ViewElement,
    J: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter, <B as View<'a>>::Iter, <C as View<'a>>::Iter, <D as View<'a>>::Iter, <E as View<'a>>::Iter, <F as View<'a>>::Iter, <G as View<'a>>::Iter, <H as View<'a>>::Iter, <I as View<'a>>::Iter, <J as View<'a>>::Iter)>

impl<'a, A, B, C, D, E, F, G, H, I, J, K, L> View<'a> for (A, B, C, D, E, F, G, H, I, J, K, L) where
    A: View<'a> + ViewElement,
    B: View<'a> + ViewElement,
    C: View<'a> + ViewElement,
    D: View<'a> + ViewElement,
    E: View<'a> + ViewElement,
    F: View<'a> + ViewElement,
    G: View<'a> + ViewElement,
    H: View<'a> + ViewElement,
    I: View<'a> + ViewElement,
    J: View<'a> + ViewElement,
    K: View<'a> + ViewElement,
    L: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter, <B as View<'a>>::Iter, <C as View<'a>>::Iter, <D as View<'a>>::Iter, <E as View<'a>>::Iter, <F as View<'a>>::Iter, <G as View<'a>>::Iter, <H as View<'a>>::Iter, <I as View<'a>>::Iter, <J as View<'a>>::Iter, <K as View<'a>>::Iter, <L as View<'a>>::Iter)>

impl<'a, A, B> View<'a> for (A, B) where
    A: View<'a> + ViewElement,
    B: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter, <B as View<'a>>::Iter)>

impl<'a, A, B, C, D, E, F, G> View<'a> for (A, B, C, D, E, F, G) where
    A: View<'a> + ViewElement,
    B: View<'a> + ViewElement,
    C: View<'a> + ViewElement,
    D: View<'a> + ViewElement,
    E: View<'a> + ViewElement,
    F: View<'a> + ViewElement,
    G: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter, <B as View<'a>>::Iter, <C as View<'a>>::Iter, <D as View<'a>>::Iter, <E as View<'a>>::Iter, <F as View<'a>>::Iter, <G as View<'a>>::Iter)>

impl<'a, A, B, C, D, E, F, G, H, I> View<'a> for (A, B, C, D, E, F, G, H, I) where
    A: View<'a> + ViewElement,
    B: View<'a> + ViewElement,
    C: View<'a> + ViewElement,
    D: View<'a> + ViewElement,
    E: View<'a> + ViewElement,
    F: View<'a> + ViewElement,
    G: View<'a> + ViewElement,
    H: View<'a> + ViewElement,
    I: View<'a> + ViewElement, 

type Iter = Zip<(<A as View<'a>>::Iter, <B as View<'a>>::Iter, <C as View<'a>>::Iter, <D as View<'a>>::Iter, <E as View<'a>>::Iter, <F as View<'a>>::Iter, <G as View<'a>>::Iter, <H as View<'a>>::Iter, <I as View<'a>>::Iter)>

Loading content...

Implementors

impl<'a, T> View<'a> for Read<T> where
    T: Component

type Iter = RefIter<'a, T, Iter<'a, T>>

impl<'a, T> View<'a> for Tagged<T> where
    T: Tag

type Iter = Take<Repeat<&'a T>>

impl<'a, T> View<'a> for TryRead<T> where
    T: Component

type Iter = TryRefIter<'a, T, Iter<'a, T>>

impl<'a, T> View<'a> for TryWrite<T> where
    T: Component

type Iter = TryRefIterMut<'a, T, IterMut<'a, T>>

impl<'a, T> View<'a> for Write<T> where
    T: Component

type Iter = RefIterMut<'a, T, IterMut<'a, T>>

Loading content...