Trait rin::ecs::OrderedData[][src]

pub trait OrderedData<'a> {
    type Iter;
    type Components;
    type ComponentsRef;
    type Storage;
    pub fn query_mask<E>(entities: &E) -> Bitmask
    where
        E: EntitiesStorage
;
pub fn into_iter<E>(entities: &'a E) -> Self::Iter
    where
        E: EntitiesStorage
;
pub fn storage<E>(entities: &'a E) -> Option<Self::Storage>
    where
        E: EntitiesStorage
;
pub fn ordered_ids<S, E>(
        entities: &'a E,
        query_mask: Bitmask,
        unordered_storage: &S
    ) -> OrderedIndexGuard<'a>
    where
        E: EntitiesStorage,
        S: FastIndexExt
; }

Associated Types

type Iter[src]

type Components[src]

type ComponentsRef[src]

type Storage[src]

Loading content...

Required methods

pub fn query_mask<E>(entities: &E) -> Bitmask where
    E: EntitiesStorage
[src]

pub fn into_iter<E>(entities: &'a E) -> Self::Iter where
    E: EntitiesStorage
[src]

pub fn storage<E>(entities: &'a E) -> Option<Self::Storage> where
    E: EntitiesStorage
[src]

pub fn ordered_ids<S, E>(
    entities: &'a E,
    query_mask: Bitmask,
    unordered_storage: &S
) -> OrderedIndexGuard<'a> where
    E: EntitiesStorage,
    S: FastIndexExt
[src]

Loading content...

Implementations on Foreign Types

impl<'a, UO, U1, U2, U3> OrderedData<'a> for (UO, U1, U2, U3) where
    U1: UnorderedData<'a> + 'a,
    U2: UnorderedData<'a> + 'a,
    U3: UnorderedData<'a> + 'a,
    UO: OrderedData<'a> + 'a,
    <UO as OrderedData<'a>>::Storage: FastIndexExt,
    <U1 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U1 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U2 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U2 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U3 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U3 as UnorderedData<'a>>::Storage: StorageRef<'a>, 
[src]

type Iter = IntoITer4<'a, <UO as OrderedData<'a>>::Storage, <(U1, U2, U3) as UnorderedData<'a>>::Storage, <U1 as UnorderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage, <U3 as UnorderedData<'a>>::Storage>

type Components = (<UO as OrderedData<'a>>::Components, <U1 as UnorderedData<'a>>::Components, <U2 as UnorderedData<'a>>::Components, <U3 as UnorderedData<'a>>::Components)

type ComponentsRef = (<UO as OrderedData<'a>>::ComponentsRef, <U1 as UnorderedData<'a>>::ComponentsRef, <U2 as UnorderedData<'a>>::ComponentsRef, <U3 as UnorderedData<'a>>::ComponentsRef)

type Storage = StorageRef4<'a, <UO as OrderedData<'a>>::Storage, <U1 as UnorderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage, <U3 as UnorderedData<'a>>::Storage>

impl<'a, UO, U1> OrderedData<'a> for (UO, U1) where
    U1: UnorderedData<'a> + 'a,
    UO: OrderedData<'a> + 'a,
    <UO as OrderedData<'a>>::Storage: FastIndexExt,
    <U1 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U1 as UnorderedData<'a>>::Storage: StorageRef<'a>, 
[src]

type Iter = IntoITer2<'a, <UO as OrderedData<'a>>::Storage, <U1 as UnorderedData<'a>>::Storage, <U1 as UnorderedData<'a>>::Storage>

type Components = (<UO as OrderedData<'a>>::Components, <U1 as UnorderedData<'a>>::Components)

type ComponentsRef = (<UO as OrderedData<'a>>::ComponentsRef, <U1 as UnorderedData<'a>>::ComponentsRef)

type Storage = StorageRef2<'a, <UO as OrderedData<'a>>::Storage, <U1 as UnorderedData<'a>>::Storage>

impl<'a, U1, U2, U3, U4, U5, U6, U7, U8> OrderedData<'a> for (U1, U2, U3, U4, U5, U6, U7, U8) where
    U8: UnorderedData<'a> + 'a,
    U1: OrderedData<'a> + 'a,
    U2: UnorderedData<'a> + 'a,
    U3: UnorderedData<'a> + 'a,
    U4: UnorderedData<'a> + 'a,
    U5: UnorderedData<'a> + 'a,
    U6: UnorderedData<'a> + 'a,
    U7: UnorderedData<'a> + 'a,
    <U1 as OrderedData<'a>>::Storage: FastIndexExt,
    <U2 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U2 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U3 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U3 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U4 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U4 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U5 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U5 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U6 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U6 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U7 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U7 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U8 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U8 as UnorderedData<'a>>::Storage: StorageRef<'a>, 
[src]

type Iter = IntoITer8<'a, <U1 as OrderedData<'a>>::Storage, <(U2, U3, U4, U5, U6, U7, U8) as UnorderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage, <U3 as UnorderedData<'a>>::Storage, <U4 as UnorderedData<'a>>::Storage, <U5 as UnorderedData<'a>>::Storage, <U6 as UnorderedData<'a>>::Storage, <U7 as UnorderedData<'a>>::Storage, <U8 as UnorderedData<'a>>::Storage>

type Components = (<U1 as OrderedData<'a>>::Components, <U2 as UnorderedData<'a>>::Components, <U3 as UnorderedData<'a>>::Components, <U4 as UnorderedData<'a>>::Components, <U5 as UnorderedData<'a>>::Components, <U6 as UnorderedData<'a>>::Components, <U7 as UnorderedData<'a>>::Components, <U8 as UnorderedData<'a>>::Components)

type ComponentsRef = (<U1 as OrderedData<'a>>::ComponentsRef, <U2 as UnorderedData<'a>>::ComponentsRef, <U3 as UnorderedData<'a>>::ComponentsRef, <U4 as UnorderedData<'a>>::ComponentsRef, <U5 as UnorderedData<'a>>::ComponentsRef, <U6 as UnorderedData<'a>>::ComponentsRef, <U7 as UnorderedData<'a>>::ComponentsRef, <U8 as UnorderedData<'a>>::ComponentsRef)

type Storage = StorageRef8<'a, <U1 as OrderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage, <U3 as UnorderedData<'a>>::Storage, <U4 as UnorderedData<'a>>::Storage, <U5 as UnorderedData<'a>>::Storage, <U6 as UnorderedData<'a>>::Storage, <U7 as UnorderedData<'a>>::Storage, <U8 as UnorderedData<'a>>::Storage>

impl<'a, UO, U1, U2> OrderedData<'a> for (UO, U1, U2) where
    U1: UnorderedData<'a> + 'a,
    U2: UnorderedData<'a> + 'a,
    UO: OrderedData<'a> + 'a,
    <UO as OrderedData<'a>>::Storage: FastIndexExt,
    <U1 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U1 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U2 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U2 as UnorderedData<'a>>::Storage: StorageRef<'a>, 
[src]

type Iter = IntoITer3<'a, <UO as OrderedData<'a>>::Storage, <(U1, U2) as UnorderedData<'a>>::Storage, <U1 as UnorderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage>

type Components = (<UO as OrderedData<'a>>::Components, <U1 as UnorderedData<'a>>::Components, <U2 as UnorderedData<'a>>::Components)

type ComponentsRef = (<UO as OrderedData<'a>>::ComponentsRef, <U1 as UnorderedData<'a>>::ComponentsRef, <U2 as UnorderedData<'a>>::ComponentsRef)

type Storage = StorageRef3<'a, <UO as OrderedData<'a>>::Storage, <U1 as UnorderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage>

impl<'a, U1, U2, U3, U4, U5, U6> OrderedData<'a> for (U1, U2, U3, U4, U5, U6) where
    U1: OrderedData<'a> + 'a,
    U2: UnorderedData<'a> + 'a,
    U3: UnorderedData<'a> + 'a,
    U4: UnorderedData<'a> + 'a,
    U5: UnorderedData<'a> + 'a,
    U6: UnorderedData<'a> + 'a,
    <U1 as OrderedData<'a>>::Storage: FastIndexExt,
    <U2 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U2 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U3 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U3 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U4 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U4 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U5 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U5 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U6 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U6 as UnorderedData<'a>>::Storage: StorageRef<'a>, 
[src]

type Iter = IntoITer6<'a, <U1 as OrderedData<'a>>::Storage, <(U2, U3, U4, U5, U6) as UnorderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage, <U3 as UnorderedData<'a>>::Storage, <U4 as UnorderedData<'a>>::Storage, <U5 as UnorderedData<'a>>::Storage, <U6 as UnorderedData<'a>>::Storage>

type Components = (<U1 as OrderedData<'a>>::Components, <U2 as UnorderedData<'a>>::Components, <U3 as UnorderedData<'a>>::Components, <U4 as UnorderedData<'a>>::Components, <U5 as UnorderedData<'a>>::Components, <U6 as UnorderedData<'a>>::Components)

type ComponentsRef = (<U1 as OrderedData<'a>>::ComponentsRef, <U2 as UnorderedData<'a>>::ComponentsRef, <U3 as UnorderedData<'a>>::ComponentsRef, <U4 as UnorderedData<'a>>::ComponentsRef, <U5 as UnorderedData<'a>>::ComponentsRef, <U6 as UnorderedData<'a>>::ComponentsRef)

type Storage = StorageRef6<'a, <U1 as OrderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage, <U3 as UnorderedData<'a>>::Storage, <U4 as UnorderedData<'a>>::Storage, <U5 as UnorderedData<'a>>::Storage, <U6 as UnorderedData<'a>>::Storage>

impl<'a, U1, U2, U3, U4, U5> OrderedData<'a> for (U1, U2, U3, U4, U5) where
    U1: OrderedData<'a> + 'a,
    U2: UnorderedData<'a> + 'a,
    U3: UnorderedData<'a> + 'a,
    U4: UnorderedData<'a> + 'a,
    U5: UnorderedData<'a> + 'a,
    <U1 as OrderedData<'a>>::Storage: FastIndexExt,
    <U2 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U2 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U3 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U3 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U4 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U4 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U5 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U5 as UnorderedData<'a>>::Storage: StorageRef<'a>, 
[src]

type Iter = IntoITer5<'a, <U1 as OrderedData<'a>>::Storage, <(U2, U3, U4, U5) as UnorderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage, <U3 as UnorderedData<'a>>::Storage, <U4 as UnorderedData<'a>>::Storage, <U5 as UnorderedData<'a>>::Storage>

type Components = (<U1 as OrderedData<'a>>::Components, <U2 as UnorderedData<'a>>::Components, <U3 as UnorderedData<'a>>::Components, <U4 as UnorderedData<'a>>::Components, <U5 as UnorderedData<'a>>::Components)

type ComponentsRef = (<U1 as OrderedData<'a>>::ComponentsRef, <U2 as UnorderedData<'a>>::ComponentsRef, <U3 as UnorderedData<'a>>::ComponentsRef, <U4 as UnorderedData<'a>>::ComponentsRef, <U5 as UnorderedData<'a>>::ComponentsRef)

type Storage = StorageRef5<'a, <U1 as OrderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage, <U3 as UnorderedData<'a>>::Storage, <U4 as UnorderedData<'a>>::Storage, <U5 as UnorderedData<'a>>::Storage>

impl<'a, U1, U2, U3, U4, U5, U6, U7> OrderedData<'a> for (U1, U2, U3, U4, U5, U6, U7) where
    U1: OrderedData<'a> + 'a,
    U2: UnorderedData<'a> + 'a,
    U3: UnorderedData<'a> + 'a,
    U4: UnorderedData<'a> + 'a,
    U5: UnorderedData<'a> + 'a,
    U6: UnorderedData<'a> + 'a,
    U7: UnorderedData<'a> + 'a,
    <U1 as OrderedData<'a>>::Storage: FastIndexExt,
    <U2 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U2 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U3 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U3 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U4 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U4 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U5 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U5 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U6 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U6 as UnorderedData<'a>>::Storage: StorageRef<'a>,
    <U7 as UnorderedData<'a>>::Storage: FastIndexExt,
    <U7 as UnorderedData<'a>>::Storage: StorageRef<'a>, 
[src]

type Iter = IntoITer7<'a, <U1 as OrderedData<'a>>::Storage, <(U2, U3, U4, U5, U6, U7) as UnorderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage, <U3 as UnorderedData<'a>>::Storage, <U4 as UnorderedData<'a>>::Storage, <U5 as UnorderedData<'a>>::Storage, <U6 as UnorderedData<'a>>::Storage, <U7 as UnorderedData<'a>>::Storage>

type Components = (<U1 as OrderedData<'a>>::Components, <U2 as UnorderedData<'a>>::Components, <U3 as UnorderedData<'a>>::Components, <U4 as UnorderedData<'a>>::Components, <U5 as UnorderedData<'a>>::Components, <U6 as UnorderedData<'a>>::Components, <U7 as UnorderedData<'a>>::Components)

type ComponentsRef = (<U1 as OrderedData<'a>>::ComponentsRef, <U2 as UnorderedData<'a>>::ComponentsRef, <U3 as UnorderedData<'a>>::ComponentsRef, <U4 as UnorderedData<'a>>::ComponentsRef, <U5 as UnorderedData<'a>>::ComponentsRef, <U6 as UnorderedData<'a>>::ComponentsRef, <U7 as UnorderedData<'a>>::ComponentsRef)

type Storage = StorageRef7<'a, <U1 as OrderedData<'a>>::Storage, <U2 as UnorderedData<'a>>::Storage, <U3 as UnorderedData<'a>>::Storage, <U4 as UnorderedData<'a>>::Storage, <U5 as UnorderedData<'a>>::Storage, <U6 as UnorderedData<'a>>::Storage, <U7 as UnorderedData<'a>>::Storage>

Loading content...

Implementors

impl<'a, T> OrderedData<'a> for ReadAndParent<'a, T> where
    T: ComponentSend,
    <T as Component>::Storage: for<'b> HierarchicalStorage<'b, T>,
    ReadGuardRef<'b, <T as Component>::Storage>: for<'b> IntoHierarchicalIter<'b, T>, 
[src]

type Iter = ReadAndParentIter<'a, T>

type Components = T

type ComponentsRef = (&'a T, Option<&'a T>)

type Storage = ParentStorageRead<'a, <T as Component>::Storage, ReadGuardRef<'a, <T as Component>::Storage>, <ReadAndParent<'a, T> as OrderedData<'a>>::Components>

impl<'a, T> OrderedData<'a> for ReadHierarchical<'a, T> where
    T: Component,
    <T as Component>::Storage: for<'b> HierarchicalStorage<'b, T>,
    ReadGuardRef<'b, <T as Component>::Storage>: for<'b> IntoOrderedIter
[src]

type Iter = IterOptionWrapper<<ReadGuardRef<'a, <T as Component>::Storage> as IntoOrderedIter>::OrderedIter>

type Components = T

type ComponentsRef = NodeRef<'a, T>

type Storage = HierarchicalStorageRead<'a, <T as Component>::Storage, ReadGuardRef<'a, <T as Component>::Storage>, <ReadHierarchical<'a, T> as OrderedData<'a>>::Components>

impl<'a, T> OrderedData<'a> for WriteAndParent<'a, T> where
    T: Component,
    <T as Component>::Storage: for<'b> HierarchicalStorage<'b, T>,
    WriteGuardRef<'b, <T as Component>::Storage, <T as Component>::MutStorageCacheGuard>: for<'b> IntoOrderedIterMut
[src]

type Iter = WriteAndParentIter<'a, T, <WriteGuardRef<'a, <T as Component>::Storage, <T as Component>::MutStorageCacheGuard> as IntoOrderedIterMut>::OrderedIterMut>

type Components = T

type ComponentsRef = (&'a mut T, Option<&'a T>)

type Storage = ParentStorageWrite<'a, <T as Component>::Storage, WriteGuardRef<'a, <T as Component>::Storage, <T as Component>::MutStorageCacheGuard>, <WriteAndParent<'a, T> as OrderedData<'a>>::Components>

impl<'a, T> OrderedData<'a> for WriteHierarchical<'a, T> where
    T: ComponentSend,
    <T as Component>::Storage: for<'b> HierarchicalStorage<'b, T>,
    WriteGuardRef<'b, <T as Component>::Storage, <T as Component>::MutStorageCacheGuard>: for<'b> IntoOrderedIterMut
[src]

type Iter = IterOptionWrapper<<WriteGuardRef<'a, <T as Component>::Storage, <T as Component>::MutStorageCacheGuard> as IntoOrderedIterMut>::OrderedIterMut>

type Components = T

type ComponentsRef = NodeRefMut<'a, T>

type Storage = HierarchicalStorageWrite<'a, <T as Component>::Storage, WriteGuardRef<'a, <T as Component>::Storage, <T as Component>::MutStorageCacheGuard>, <WriteHierarchical<'a, T> as OrderedData<'a>>::Components>

impl<'a, T, Ref> OrderedData<'a> for ReadAndParentRef<'a, T, Ref> where
    Ref: UnorderedData<'a>,
    T: ComponentSend,
    <T as Component>::Storage: for<'b> HierarchicalStorage<'b, T>,
    ReadGuardRef<'b, <T as Component>::Storage>: for<'b> IntoHierarchicalIter<'b, T>, 
[src]

type Iter = ReadAndParentRefIter<'a, ReadGuardRef<'a, <T as Component>::Storage>, T, Ref, <Ref as UnorderedData<'a>>::Storage>

type Components = T

type ComponentsRef = (&'a T, Option<<Ref as UnorderedData<'a>>::ComponentsRef>)

type Storage = ParentStorageReadRef<'a, ReadGuardRef<'a, <T as Component>::Storage>, T, Ref, <Ref as UnorderedData<'a>>::Storage>

Loading content...