pub trait Traversal<D: ?Sized>: ReadOnlyQueryData {
// Required method
fn traverse(item: Self::Item<'_>, data: &D) -> Option<Entity>;
}
Expand description
A component that can point to another entity, and which can be used to define a path through the ECS.
Traversals are used to specify the direction of event propagation in observers.
The default query is ()
.
Infinite loops are possible, and are not checked for. While looping can be desirable in some contexts
(for example, an observer that triggers itself multiple times before stopping), following an infinite
traversal loop without an eventual exit will cause your application to hang. Each implementer of Traversal
for documenting possible looping behavior, and consumers of those implementations are responsible for
avoiding infinite loops in their code.
Traversals may be parameterized with additional data. For example, in observer event propagation, the
parameter D
is the event type given in Trigger<E>
. This allows traversal to differ depending on event
data.
Required Methods§
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.
Implementations on Foreign Types§
Source§impl<R: Relationship, D> Traversal<D> for &R
This provides generalized hierarchy traversal for use in event propagation.
impl<R: Relationship, D> Traversal<D> for &R
This provides generalized hierarchy traversal for use in event propagation.
§Warning
Traversing in a loop could result in infinite loops for relationship graphs with loops.