Trait shred::SystemData
source · [−]pub trait SystemData<'a> {
fn setup(world: &mut World);
fn fetch(world: &'a World) -> Self;
fn reads() -> Vec<ResourceId>;
fn writes() -> Vec<ResourceId>;
}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
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.
fn reads() -> Vec<ResourceId>
fn reads() -> Vec<ResourceId>
Returns all read dependencies as fetched from Self::fetch.
Please note that returning wrong dependencies can lead to a panic.
fn writes() -> Vec<ResourceId>
fn writes() -> Vec<ResourceId>
Returns all write dependencies as fetched from Self::fetch.
Please note that returning wrong dependencies can lead to a panic.