[][src]Trait bevy_ecs::Fetch

pub trait Fetch<'a> {
    type Item;
    fn access(archetype: &Archetype) -> Option<Access>;
fn borrow(archetype: &Archetype);
unsafe fn get(archetype: &'a Archetype, offset: usize) -> Option<Self>;
fn release(archetype: &Archetype);
unsafe fn next(&mut self) -> Self::Item; unsafe fn should_skip(&self) -> bool { ... } }

Streaming iterators over contiguous homogeneous ranges of components

Associated Types

type Item

Type of value to be fetched

Loading content...

Required methods

fn access(archetype: &Archetype) -> Option<Access>

How this query will access archetype, if at all

fn borrow(archetype: &Archetype)

Acquire dynamic borrows from archetype

unsafe fn get(archetype: &'a Archetype, offset: usize) -> Option<Self>

Construct a Fetch for archetype if it should be traversed

Safety

offset must be in bounds of archetype

fn release(archetype: &Archetype)

Release dynamic borrows acquired by borrow

unsafe fn next(&mut self) -> Self::Item

Access the next item in this archetype without bounds checking

Safety

  • Must only be called after borrow
  • release must not be called while 'a is still live
  • Bounds-checking must be performed externally
  • Any resulting borrows must be legal (e.g. no &mut to something another iterator might access)
Loading content...

Provided methods

unsafe fn should_skip(&self) -> bool

if this returns true, the current item will be skipped during iteration

Safety

shouldn't be called if there is no current item

Loading content...

Implementations on Foreign Types

impl<'a, B, A> Fetch<'a> for (B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>, 
[src]

type Item = (<B as Fetch<'a>>::Item, <A as Fetch<'a>>::Item)

impl<'a, C, B, A> Fetch<'a> for (C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>, 
[src]

type Item = (<C as Fetch<'a>>::Item, <B as Fetch<'a>>::Item, <A as Fetch<'a>>::Item)

impl<'a, E, D, C, B, A> Fetch<'a> for (E, D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>,
    E: Fetch<'a>, 
[src]

type Item = (<E as Fetch<'a>>::Item, <D as Fetch<'a>>::Item, <C as Fetch<'a>>::Item, <B as Fetch<'a>>::Item, <A as Fetch<'a>>::Item)

impl<'a, M, L, K, J, I, H, G, F, E, D, C, B, A> Fetch<'a> for (M, L, K, J, I, H, G, F, E, D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>,
    E: Fetch<'a>,
    F: Fetch<'a>,
    G: Fetch<'a>,
    H: Fetch<'a>,
    I: Fetch<'a>,
    J: Fetch<'a>,
    K: Fetch<'a>,
    L: Fetch<'a>,
    M: Fetch<'a>, 
[src]

type Item = (<M as Fetch<'a>>::Item, <L as Fetch<'a>>::Item, <K as Fetch<'a>>::Item, <J as Fetch<'a>>::Item, <I as Fetch<'a>>::Item, <H as Fetch<'a>>::Item, <G as Fetch<'a>>::Item, <F as Fetch<'a>>::Item, <E as Fetch<'a>>::Item, <D as Fetch<'a>>::Item, <C as Fetch<'a>>::Item, <B as Fetch<'a>>::Item, <A as Fetch<'a>>::Item)

impl<'a, F, E, D, C, B, A> Fetch<'a> for (F, E, D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>,
    E: Fetch<'a>,
    F: Fetch<'a>, 
[src]

type Item = (<F as Fetch<'a>>::Item, <E as Fetch<'a>>::Item, <D as Fetch<'a>>::Item, <C as Fetch<'a>>::Item, <B as Fetch<'a>>::Item, <A as Fetch<'a>>::Item)

impl<'a, L, K, J, I, H, G, F, E, D, C, B, A> Fetch<'a> for (L, K, J, I, H, G, F, E, D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>,
    E: Fetch<'a>,
    F: Fetch<'a>,
    G: Fetch<'a>,
    H: Fetch<'a>,
    I: Fetch<'a>,
    J: Fetch<'a>,
    K: Fetch<'a>,
    L: Fetch<'a>, 
[src]

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

impl<'a, N, M, L, K, J, I, H, G, F, E, D, C, B, A> Fetch<'a> for (N, M, L, K, J, I, H, G, F, E, D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>,
    E: Fetch<'a>,
    F: Fetch<'a>,
    G: Fetch<'a>,
    H: Fetch<'a>,
    I: Fetch<'a>,
    J: Fetch<'a>,
    K: Fetch<'a>,
    L: Fetch<'a>,
    M: Fetch<'a>,
    N: Fetch<'a>, 
[src]

type Item = (<N as Fetch<'a>>::Item, <M as Fetch<'a>>::Item, <L as Fetch<'a>>::Item, <K as Fetch<'a>>::Item, <J as Fetch<'a>>::Item, <I as Fetch<'a>>::Item, <H as Fetch<'a>>::Item, <G as Fetch<'a>>::Item, <F as Fetch<'a>>::Item, <E as Fetch<'a>>::Item, <D as Fetch<'a>>::Item, <C as Fetch<'a>>::Item, <B as Fetch<'a>>::Item, <A as Fetch<'a>>::Item)

impl<'a, A> Fetch<'a> for (A,) where
    A: Fetch<'a>, 
[src]

type Item = (<A as Fetch<'a>>::Item,)

impl<'a, O, N, M, L, K, J, I, H, G, F, E, D, C, B, A> Fetch<'a> for (O, N, M, L, K, J, I, H, G, F, E, D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>,
    E: Fetch<'a>,
    F: Fetch<'a>,
    G: Fetch<'a>,
    H: Fetch<'a>,
    I: Fetch<'a>,
    J: Fetch<'a>,
    K: Fetch<'a>,
    L: Fetch<'a>,
    M: Fetch<'a>,
    N: Fetch<'a>,
    O: Fetch<'a>, 
[src]

type Item = (<O as Fetch<'a>>::Item, <N as Fetch<'a>>::Item, <M as Fetch<'a>>::Item, <L as Fetch<'a>>::Item, <K as Fetch<'a>>::Item, <J as Fetch<'a>>::Item, <I as Fetch<'a>>::Item, <H as Fetch<'a>>::Item, <G as Fetch<'a>>::Item, <F as Fetch<'a>>::Item, <E as Fetch<'a>>::Item, <D as Fetch<'a>>::Item, <C as Fetch<'a>>::Item, <B as Fetch<'a>>::Item, <A as Fetch<'a>>::Item)

impl<'a> Fetch<'a> for ()[src]

type Item = ()

impl<'a, D, C, B, A> Fetch<'a> for (D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>, 
[src]

type Item = (<D as Fetch<'a>>::Item, <C as Fetch<'a>>::Item, <B as Fetch<'a>>::Item, <A as Fetch<'a>>::Item)

impl<'a, I, H, G, F, E, D, C, B, A> Fetch<'a> for (I, H, G, F, E, D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>,
    E: Fetch<'a>,
    F: Fetch<'a>,
    G: Fetch<'a>,
    H: Fetch<'a>,
    I: Fetch<'a>, 
[src]

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

impl<'a, J, I, H, G, F, E, D, C, B, A> Fetch<'a> for (J, I, H, G, F, E, D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>,
    E: Fetch<'a>,
    F: Fetch<'a>,
    G: Fetch<'a>,
    H: Fetch<'a>,
    I: Fetch<'a>,
    J: Fetch<'a>, 
[src]

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

impl<'a, K, J, I, H, G, F, E, D, C, B, A> Fetch<'a> for (K, J, I, H, G, F, E, D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>,
    E: Fetch<'a>,
    F: Fetch<'a>,
    G: Fetch<'a>,
    H: Fetch<'a>,
    I: Fetch<'a>,
    J: Fetch<'a>,
    K: Fetch<'a>, 
[src]

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

impl<'a, G, F, E, D, C, B, A> Fetch<'a> for (G, F, E, D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>,
    E: Fetch<'a>,
    F: Fetch<'a>,
    G: Fetch<'a>, 
[src]

type Item = (<G as Fetch<'a>>::Item, <F as Fetch<'a>>::Item, <E as Fetch<'a>>::Item, <D as Fetch<'a>>::Item, <C as Fetch<'a>>::Item, <B as Fetch<'a>>::Item, <A as Fetch<'a>>::Item)

impl<'a, H, G, F, E, D, C, B, A> Fetch<'a> for (H, G, F, E, D, C, B, A) where
    A: Fetch<'a>,
    B: Fetch<'a>,
    C: Fetch<'a>,
    D: Fetch<'a>,
    E: Fetch<'a>,
    F: Fetch<'a>,
    G: Fetch<'a>,
    H: Fetch<'a>, 
[src]

type Item = (<H as Fetch<'a>>::Item, <G as Fetch<'a>>::Item, <F as Fetch<'a>>::Item, <E as Fetch<'a>>::Item, <D as Fetch<'a>>::Item, <C as Fetch<'a>>::Item, <B as Fetch<'a>>::Item, <A as Fetch<'a>>::Item)

Loading content...

Implementors

Loading content...