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.