logo
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

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

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

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

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more

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

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait. Read more

Returns the argument unchanged.

Creates Self using data from the given World

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more