pub struct Schedule {
stages: HashMap<Box<dyn StageLabel>, Box<dyn Stage>>,
stage_order: Vec<Box<dyn StageLabel>>,
}Expand description
A container of Stages set to be run in a linear order.
Since Schedule implements the Stage trait, it can be inserted into another schedule.
In this way, the properties of the child schedule can be set differently from the parent.
For example, it can be set to run only once during app execution, while the parent schedule
runs indefinitely.
Fields§
§stages: HashMap<Box<dyn StageLabel>, Box<dyn Stage>>§stage_order: Vec<Box<dyn StageLabel>>Implementations§
source§impl Schedule
impl Schedule
sourcepub fn add_stage<S: Stage>(
&mut self,
label: impl StageLabel,
stage: S
) -> &mut Self
pub fn add_stage<S: Stage>( &mut self, label: impl StageLabel, stage: S ) -> &mut Self
Adds the given stage at the last position of the schedule.
§Example
schedule.add_stage("my_stage", NopStage);pub fn remove_stage(&mut self, label: impl StageLabel) -> &mut Self
sourcepub fn add_stage_after<S: Stage>(
&mut self,
target: impl StageLabel,
label: impl StageLabel,
stage: S
) -> &mut Self
pub fn add_stage_after<S: Stage>( &mut self, target: impl StageLabel, label: impl StageLabel, stage: S ) -> &mut Self
Adds the given stage immediately after the target stage.
§Example
schedule.add_stage_after("target_stage", "my_stage", NopStage);sourcepub fn add_stage_before<S: Stage>(
&mut self,
target: impl StageLabel,
label: impl StageLabel,
stage: S
) -> &mut Self
pub fn add_stage_before<S: Stage>( &mut self, target: impl StageLabel, label: impl StageLabel, stage: S ) -> &mut Self
Adds the given stage immediately before the target stage.
§Example
schedule.add_stage_before("target_stage", "my_stage", NopStage);sourcepub fn stage<T: Stage, F: FnOnce(&mut T) -> &mut T>(
&mut self,
label: impl StageLabel,
func: F
) -> &mut Self
pub fn stage<T: Stage, F: FnOnce(&mut T) -> &mut T>( &mut self, label: impl StageLabel, func: F ) -> &mut Self
Fetches the Stage of type T marked with label, then executes the provided
func passing the fetched stage to it as an argument.
The func argument should be a function or a closure that accepts a mutable reference
to a struct implementing Stage and returns the same type. That means that it should
also assume that the stage has already been fetched successfully.
§Example
schedule.stage("my_stage", |stage: &mut NopStage| {
// modify stage
stage
});§Panics
Panics if label refers to a non-existing stage, or if it’s not of type T.
sourcepub fn get_stage<T: Stage>(&self, label: &dyn StageLabel) -> Option<&T>
pub fn get_stage<T: Stage>(&self, label: &dyn StageLabel) -> Option<&T>
Returns a shared reference to the stage identified by label, if it exists.
If the requested stage does not exist, None is returned instead.
§Example
let stage = schedule.get_stage::<NopStage>(&"my_stage").unwrap();sourcepub fn get_stage_mut<T: Stage>(
&mut self,
label: &dyn StageLabel
) -> Option<&mut T>
pub fn get_stage_mut<T: Stage>( &mut self, label: &dyn StageLabel ) -> Option<&mut T>
Returns a unique, mutable reference to the stage identified by label, if it exists.
If the requested stage does not exist, None is returned instead.
§Example
let stage = schedule.get_stage_mut::<NopStage>(&"my_stage").unwrap();sourcepub fn run_once(&mut self, context: &mut MapContext)
pub fn run_once(&mut self, context: &mut MapContext)
Executes each Stage contained in the schedule, one at a time.
pub fn clear(&mut self)
sourcepub fn iter_stages(&self) -> impl Iterator<Item = (&dyn StageLabel, &dyn Stage)>
pub fn iter_stages(&self) -> impl Iterator<Item = (&dyn StageLabel, &dyn Stage)>
Iterates over all of schedule’s stages and their labels, in execution order.
sourcepub fn add_system_to_stage(
&mut self,
stage_label: impl StageLabel,
system: impl IntoSystemContainer
) -> &mut Self
pub fn add_system_to_stage( &mut self, stage_label: impl StageLabel, system: impl IntoSystemContainer ) -> &mut Self
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Schedule
impl !RefUnwindSafe for Schedule
impl !Send for Schedule
impl !Sync for Schedule
impl Unpin for Schedule
impl !UnwindSafe for Schedule
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more