Struct bevy::ecs::schedule::ReportExecutionOrderAmbiguities
pub struct ReportExecutionOrderAmbiguities;
Expand description
When this resource is present in the App
’s Resources
,
each SystemStage
will log a report containing
pairs of systems with ambiguous execution order.
Systems that access the same Component or Resource within the same stage risk an ambiguous order that could result in logic bugs, unless they have an explicit execution ordering constraint between them.
This occurs because, in the absence of explicit constraints, systems are executed in an unstable, arbitrary order within each stage that may vary between runs and frames.
Some ambiguities reported by the ambiguity checker may be warranted (to allow two systems to run
without blocking each other) or spurious, as the exact combination of archetypes used may
prevent them from ever conflicting during actual gameplay. You can resolve the warnings produced
by the ambiguity checker by adding .before
or .after
to one of the conflicting systems
referencing the other system to force a specific ordering.
The checker may report a system more times than the amount of constraints it would actually need to have unambiguous order with regards to a group of already-constrained systems.
Trait Implementations
impl Default for ReportExecutionOrderAmbiguities
impl Default for ReportExecutionOrderAmbiguities
fn default() -> ReportExecutionOrderAmbiguities
fn default() -> ReportExecutionOrderAmbiguities
impl Resource for ReportExecutionOrderAmbiguitieswhere
ReportExecutionOrderAmbiguities: 'static + Send + Sync,
Auto Trait Implementations
impl RefUnwindSafe for ReportExecutionOrderAmbiguities
impl Send for ReportExecutionOrderAmbiguities
impl Sync for ReportExecutionOrderAmbiguities
impl Unpin for ReportExecutionOrderAmbiguities
impl UnwindSafe for ReportExecutionOrderAmbiguities
Blanket Implementations
impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist. Read moresourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn 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, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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 morefn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read morefn 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. Read morefn 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. Read moreimpl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World