[]Trait acute_ecs::systems::resource::ResourceSet

pub trait ResourceSet: Send + Sync {
    type PreparedResources;
    unsafe fn fetch_unchecked(resources: &Resources) -> Self::PreparedResources;

    fn fetch_mut(resources: &mut Resources) -> Self::PreparedResources { ... }
fn fetch(resources: &Resources) -> Self::PreparedResources
    where
        Self: ReadOnly
, { ... } }

Trait which is implemented for tuples of resources and singular resources. This abstracts fetching resources to allow for ergonomic fetching.

Example:


struct TypeA(usize);
struct TypeB(usize);

use legion_core::prelude::*;
use legion_systems::prelude::*;
let mut resources = Resources::default();
resources.insert(TypeA(55));
resources.insert(TypeB(12));

{
    let (a, mut b) = <(Read<TypeA>, Write<TypeB>)>::fetch_mut(&mut resources);
    assert_ne!(a.0, b.0);
    b.0 = a.0;
}

{
    let (a, b) = <(Read<TypeA>, Read<TypeB>)>::fetch(&resources);
    assert_eq!(a.0, b.0);
}

Associated Types

Loading content...

Required methods

unsafe fn fetch_unchecked(resources: &Resources) -> Self::PreparedResources

Fetches all defined resources, without checking mutability.

Safety

It is up to the end user to validate proper mutability rules across the resources being accessed.

Loading content...

Provided methods

fn fetch_mut(resources: &mut Resources) -> Self::PreparedResources

fn fetch(resources: &Resources) -> Self::PreparedResources where
    Self: ReadOnly, 

Loading content...

Implementations on Foreign Types

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet,
    P: ResourceSet,
    Q: ResourceSet,
    R: ResourceSet,
    S: ResourceSet,
    T: ResourceSet,
    U: ResourceSet,
    V: ResourceSet,
    W: ResourceSet,
    X: ResourceSet

impl<A, B> ResourceSet for (A, B) where
    A: ResourceSet,
    B: ResourceSet

impl<A, B, C, D, E> ResourceSet for (A, B, C, D, E) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet,
    P: ResourceSet,
    Q: ResourceSet,
    R: ResourceSet,
    S: ResourceSet,
    T: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet,
    P: ResourceSet

impl<A, B, C, D> ResourceSet for (A, B, C, D) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet,
    P: ResourceSet,
    Q: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L, M> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet

impl<A, B, C> ResourceSet for (A, B, C) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet,
    P: ResourceSet,
    Q: ResourceSet,
    R: ResourceSet,
    S: ResourceSet,
    T: ResourceSet,
    U: ResourceSet,
    V: ResourceSet,
    W: ResourceSet

impl<A, B, C, D, E, F, G, H, I> ResourceSet for (A, B, C, D, E, F, G, H, I) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet

impl<A, B, C, D, E, F, G> ResourceSet for (A, B, C, D, E, F, G) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet,
    P: ResourceSet,
    Q: ResourceSet,
    R: ResourceSet,
    S: ResourceSet,
    T: ResourceSet,
    U: ResourceSet,
    V: ResourceSet,
    W: ResourceSet,
    X: ResourceSet,
    Y: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet,
    P: ResourceSet,
    Q: ResourceSet,
    R: ResourceSet,
    S: ResourceSet,
    T: ResourceSet,
    U: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J> ResourceSet for (A, B, C, D, E, F, G, H, I, J) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet,
    P: ResourceSet,
    Q: ResourceSet,
    R: ResourceSet,
    S: ResourceSet,
    T: ResourceSet,
    U: ResourceSet,
    V: ResourceSet,
    W: ResourceSet,
    X: ResourceSet,
    Y: ResourceSet,
    Z: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet,
    P: ResourceSet,
    Q: ResourceSet,
    R: ResourceSet,
    S: ResourceSet

impl<A, B, C, D, E, F> ResourceSet for (A, B, C, D, E, F) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet

impl ResourceSet for ()

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet,
    P: ResourceSet,
    Q: ResourceSet,
    R: ResourceSet,
    S: ResourceSet,
    T: ResourceSet,
    U: ResourceSet,
    V: ResourceSet

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet

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

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R> ResourceSet for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R) where
    A: ResourceSet,
    B: ResourceSet,
    C: ResourceSet,
    D: ResourceSet,
    E: ResourceSet,
    F: ResourceSet,
    G: ResourceSet,
    H: ResourceSet,
    I: ResourceSet,
    J: ResourceSet,
    K: ResourceSet,
    L: ResourceSet,
    M: ResourceSet,
    N: ResourceSet,
    O: ResourceSet,
    P: ResourceSet,
    Q: ResourceSet,
    R: ResourceSet

impl<A> ResourceSet for (A,) where
    A: ResourceSet

Loading content...

Implementors

impl<T> ResourceSet for Read<T> where
    T: Resource

type PreparedResources = PreparedRead<T>

impl<T> ResourceSet for Write<T> where
    T: Resource

type PreparedResources = PreparedWrite<T>

Loading content...