Trait specs::SystemData

source ·
pub trait SystemData<'a> {
    // Required methods
    fn setup(world: &mut World);
    fn fetch(world: &'a World) -> Self;
    fn reads() -> Vec<ResourceId, Global>;
    fn writes() -> Vec<ResourceId, Global>;
}
Expand description

A static system data that can specify its dependencies at statically (at compile-time). Most system data is a SystemData, the DynamicSystemData type is only needed for very special setups.

You can derive this using the #[derive(SystemData)] macro provided by shred-derive. That is as simple as enabling the shred-derive feature.

Examples

use shred::{Read, ResourceId, SystemData, World, Write};

#[derive(Default)]
pub struct Clock;
#[derive(Default)]
pub struct Timer;

// This will implement `SystemData` for `MySystemData`.
// Please note that this will only work if `SystemData`, `World` and `ResourceId` are included.
#[derive(SystemData)]
pub struct MySystemData<'a> {
    pub clock: Read<'a, Clock>,
    pub timer: Write<'a, Timer>,
}

Required Methods§

source

fn setup(world: &mut World)

Sets up the system data for fetching it from the World.

source

fn fetch(world: &'a World) -> Self

Fetches the system data from World. Note that this is only specified for one concrete lifetime 'a, you need to implement the SystemData trait for every possible lifetime.

source

fn reads() -> Vec<ResourceId, Global>

Returns all read dependencies as fetched from Self::fetch.

Please note that returning wrong dependencies can lead to a panic.

source

fn writes() -> Vec<ResourceId, Global>

Returns all write dependencies as fetched from Self::fetch.

Please note that returning wrong dependencies can lead to a panic.

Implementations on Foreign Types§

source§

impl<'a, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X> SystemData<'a> 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: SystemData<'a>, B: SystemData<'a>, C: SystemData<'a>, D: SystemData<'a>, E: SystemData<'a>, F: SystemData<'a>, G: SystemData<'a>, H: SystemData<'a>, I: SystemData<'a>, J: SystemData<'a>, K: SystemData<'a>, L: SystemData<'a>, M: SystemData<'a>, N: SystemData<'a>, O: SystemData<'a>, P: SystemData<'a>, Q: SystemData<'a>, R: SystemData<'a>, S: SystemData<'a>, T: SystemData<'a>, U: SystemData<'a>, V: SystemData<'a>, W: SystemData<'a>, X: SystemData<'a>,

source§

impl<'a, A> SystemData<'a> for (A,)where A: SystemData<'a>,

source§

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

source§

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

source§

impl<'a, T, F> SystemData<'a> for Option<Read<'a, T, F>>where T: Resource,

source§

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

source§

impl<'a, A, B, C> SystemData<'a> for (A, B, C)where A: SystemData<'a>, B: SystemData<'a>, C: SystemData<'a>,

source§

impl<'a, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V> SystemData<'a> 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: SystemData<'a>, B: SystemData<'a>, C: SystemData<'a>, D: SystemData<'a>, E: SystemData<'a>, F: SystemData<'a>, G: SystemData<'a>, H: SystemData<'a>, I: SystemData<'a>, J: SystemData<'a>, K: SystemData<'a>, L: SystemData<'a>, M: SystemData<'a>, N: SystemData<'a>, O: SystemData<'a>, P: SystemData<'a>, Q: SystemData<'a>, R: SystemData<'a>, S: SystemData<'a>, T: SystemData<'a>, U: SystemData<'a>, V: SystemData<'a>,

source§

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

source§

impl<'a, 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> SystemData<'a> 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: SystemData<'a>, B: SystemData<'a>, C: SystemData<'a>, D: SystemData<'a>, E: SystemData<'a>, F: SystemData<'a>, G: SystemData<'a>, H: SystemData<'a>, I: SystemData<'a>, J: SystemData<'a>, K: SystemData<'a>, L: SystemData<'a>, M: SystemData<'a>, N: SystemData<'a>, O: SystemData<'a>, P: SystemData<'a>, Q: SystemData<'a>, R: SystemData<'a>, S: SystemData<'a>, T: SystemData<'a>, U: SystemData<'a>, V: SystemData<'a>, W: SystemData<'a>, X: SystemData<'a>, Y: SystemData<'a>, Z: SystemData<'a>,

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

impl<'a, A, B> SystemData<'a> for (A, B)where A: SystemData<'a>, B: SystemData<'a>,

source§

impl<'a, 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> SystemData<'a> 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: SystemData<'a>, B: SystemData<'a>, C: SystemData<'a>, D: SystemData<'a>, E: SystemData<'a>, F: SystemData<'a>, G: SystemData<'a>, H: SystemData<'a>, I: SystemData<'a>, J: SystemData<'a>, K: SystemData<'a>, L: SystemData<'a>, M: SystemData<'a>, N: SystemData<'a>, O: SystemData<'a>, P: SystemData<'a>, Q: SystemData<'a>, R: SystemData<'a>, S: SystemData<'a>, T: SystemData<'a>, U: SystemData<'a>, V: SystemData<'a>, W: SystemData<'a>, X: SystemData<'a>, Y: SystemData<'a>,

source§

impl<'a, T, F> SystemData<'a> for Option<Write<'a, T, F>>where T: Resource,

source§

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

source§

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

source§

impl<'a, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W> SystemData<'a> 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: SystemData<'a>, B: SystemData<'a>, C: SystemData<'a>, D: SystemData<'a>, E: SystemData<'a>, F: SystemData<'a>, G: SystemData<'a>, H: SystemData<'a>, I: SystemData<'a>, J: SystemData<'a>, K: SystemData<'a>, L: SystemData<'a>, M: SystemData<'a>, N: SystemData<'a>, O: SystemData<'a>, P: SystemData<'a>, Q: SystemData<'a>, R: SystemData<'a>, S: SystemData<'a>, T: SystemData<'a>, U: SystemData<'a>, V: SystemData<'a>, W: SystemData<'a>,

source§

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

source§

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

source§

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

source§

impl<'a> SystemData<'a> for ()

source§

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

source§

impl<'a, A, B, C, D> SystemData<'a> for (A, B, C, D)where A: SystemData<'a>, B: SystemData<'a>, C: SystemData<'a>, D: SystemData<'a>,

source§

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

source§

impl<'a, T> SystemData<'a> for PhantomData<T>where T: ?Sized,

Implementors§

source§

impl<'a, T> SystemData<'a> for ReadStorage<'a, T>where T: Component,

source§

impl<'a, T> SystemData<'a> for WriteStorage<'a, T>where T: Component,

source§

impl<'a, T, F> SystemData<'a> for Read<'a, T, F>where T: Resource, F: SetupHandler<T>,

source§

impl<'a, T, F> SystemData<'a> for Write<'a, T, F>where T: Resource, F: SetupHandler<T>,