pub struct Schedule { /* private fields */ }
Expand description
A container of Stage
s 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.
Implementations
impl Schedule
impl Schedule
pub fn with_stage<S>(self, label: impl StageLabel, stage: S) -> Schedule where
S: Stage,
pub fn with_stage<S>(self, label: impl StageLabel, stage: S) -> Schedule where
S: Stage,
Similar to add_stage
, but it also returns itself.
pub fn with_stage_after<S>(
self,
target: impl StageLabel,
label: impl StageLabel,
stage: S
) -> Schedule where
S: Stage,
pub fn with_stage_after<S>(
self,
target: impl StageLabel,
label: impl StageLabel,
stage: S
) -> Schedule where
S: Stage,
Similar to add_stage_after
, but it also returns itself.
pub fn with_stage_before<S>(
self,
target: impl StageLabel,
label: impl StageLabel,
stage: S
) -> Schedule where
S: Stage,
pub fn with_stage_before<S>(
self,
target: impl StageLabel,
label: impl StageLabel,
stage: S
) -> Schedule where
S: Stage,
Similar to add_stage_before
, but it also returns itself.
pub fn with_run_criteria<S>(self, system: S) -> Schedule where
S: System<In = (), Out = ShouldRun>,
pub fn with_system_in_stage<Params>(
self,
stage_label: impl StageLabel,
system: impl IntoSystemDescriptor<Params>
) -> Schedule
pub fn with_system_in_stage<Params>(
self,
stage_label: impl StageLabel,
system: impl IntoSystemDescriptor<Params>
) -> Schedule
Similar to add_system_to_stage
, but it also returns itself.
pub fn set_run_criteria<S>(&mut self, system: S) -> &mut Schedule where
S: System<In = (), Out = ShouldRun>,
pub fn add_stage<S>(
&mut self,
label: impl StageLabel,
stage: S
) -> &mut Schedule where
S: Stage,
pub fn add_stage<S>(
&mut self,
label: impl StageLabel,
stage: S
) -> &mut Schedule where
S: Stage,
Adds the given stage
at the last position of the schedule.
Example
schedule.add_stage("my_stage", SystemStage::parallel());
pub fn add_stage_after<S>(
&mut self,
target: impl StageLabel,
label: impl StageLabel,
stage: S
) -> &mut Schedule where
S: Stage,
pub fn add_stage_after<S>(
&mut self,
target: impl StageLabel,
label: impl StageLabel,
stage: S
) -> &mut Schedule where
S: Stage,
Adds the given stage
immediately after the target
stage.
Example
schedule.add_stage_after("target_stage", "my_stage", SystemStage::parallel());
pub fn add_stage_before<S>(
&mut self,
target: impl StageLabel,
label: impl StageLabel,
stage: S
) -> &mut Schedule where
S: Stage,
pub fn add_stage_before<S>(
&mut self,
target: impl StageLabel,
label: impl StageLabel,
stage: S
) -> &mut Schedule where
S: Stage,
Adds the given stage
immediately before the target
stage.
Example
schedule.add_stage_before("target_stage", "my_stage", SystemStage::parallel());
pub fn add_system_to_stage<Params>(
&mut self,
stage_label: impl StageLabel,
system: impl IntoSystemDescriptor<Params>
) -> &mut Schedule
pub fn add_system_to_stage<Params>(
&mut self,
stage_label: impl StageLabel,
system: impl IntoSystemDescriptor<Params>
) -> &mut Schedule
Adds the given system
to the stage identified by stage_label
.
Example
schedule.add_system_to_stage("my_stage", my_system);
pub fn add_system_set_to_stage(
&mut self,
stage_label: impl StageLabel,
system_set: SystemSet
) -> &mut Schedule
pub fn add_system_set_to_stage(
&mut self,
stage_label: impl StageLabel,
system_set: SystemSet
) -> &mut Schedule
Adds the given system_set
to the stage identified by stage_label
.
Example
schedule.add_system_set_to_stage(
"my_stage",
SystemSet::new()
.with_system(system_a)
.with_system(system_b)
.with_system(system_c)
);
pub fn stage<T, F>(&mut self, label: impl StageLabel, func: F) -> &mut Schedule where
T: Stage,
F: FnOnce(&mut T) -> &mut T,
pub fn stage<T, F>(&mut self, label: impl StageLabel, func: F) -> &mut Schedule where
T: Stage,
F: FnOnce(&mut T) -> &mut T,
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 SystemStage| {
stage.add_system(my_system)
});
Panics
Panics if label
refers to a non-existing stage, or if it’s not of type T
.
pub fn get_stage<T>(&self, label: &(dyn StageLabel + 'static)) -> Option<&T> where
T: Stage,
pub fn get_stage<T>(&self, label: &(dyn StageLabel + 'static)) -> Option<&T> where
T: Stage,
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::<SystemStage>(&"my_stage").unwrap();
pub fn get_stage_mut<T>(
&mut self,
label: &(dyn StageLabel + 'static)
) -> Option<&mut T> where
T: Stage,
pub fn get_stage_mut<T>(
&mut self,
label: &(dyn StageLabel + 'static)
) -> Option<&mut T> where
T: Stage,
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::<SystemStage>(&"my_stage").unwrap();
pub fn run_once(&mut self, world: &mut World)
pub fn run_once(&mut self, world: &mut World)
Executes each Stage
contained in the schedule, one at a time.
pub fn iter_stages(
&self
) -> impl Iterator<Item = (&(dyn StageLabel + 'static), &(dyn Stage + 'static))>
pub fn iter_stages(
&self
) -> impl Iterator<Item = (&(dyn StageLabel + 'static), &(dyn Stage + 'static))>
Iterates over all of schedule’s stages and their labels, in execution order.
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Schedule
impl Send for Schedule
impl Sync for Schedule
impl Unpin for Schedule
impl !UnwindSafe for Schedule
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘNotable traits for Box<F, A>impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘNotable traits for Box<F, A>impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
Convert 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
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
pub fn as_any(&self) -> &(dyn Any + 'static)
pub fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
impl<T> FromWorld for T where
T: Default,
impl<T> FromWorld for T where
T: Default,
pub fn from_world(_world: &mut World) -> T
pub fn from_world(_world: &mut World) -> T
Creates Self
using data from the given World
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
sourcefn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
pub fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
T: Future, type Output = <T as Future>::Output;
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
fn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more