specs

Trait System

Source
pub trait System<'a> {
    type SystemData: DynamicSystemData<'a>;

    // Required method
    fn run(&mut self, data: Self::SystemData);

    // Provided methods
    fn running_time(&self) -> RunningTime { ... }
    fn accessor<'b>(&'b self) -> AccessorCow<'a, 'b, Self> { ... }
    fn setup(&mut self, world: &mut World) { ... }
    fn dispose(self, world: &mut World)
       where Self: Sized { ... }
}
Expand description

A System, executed with a set of required Resources.

Required Associated Types§

Source

type SystemData: DynamicSystemData<'a>

The resource bundle required to execute this system.

You will mostly use a tuple of system data (which also implements SystemData). You can also create such a resource bundle by simply deriving SystemData for a struct.

Every SystemData is also a DynamicSystemData.

Required Methods§

Source

fn run(&mut self, data: Self::SystemData)

Executes the system with the required system data.

Provided Methods§

Source

fn running_time(&self) -> RunningTime

Returns a hint how long the system needs for running. This is used to optimize the way they’re executed (might allow more parallelization).

Defaults to RunningTime::Average.

Source

fn accessor<'b>(&'b self) -> AccessorCow<'a, 'b, Self>

Return the accessor from the SystemData.

Source

fn setup(&mut self, world: &mut World)

Sets up the World using Self::SystemData::setup.

Source

fn dispose(self, world: &mut World)
where Self: Sized,

Performs clean up that requires resources from the World. This commonly removes components from world which depend on external resources.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§