Skip to main content

ReadOnlyWorldQuery

Trait ReadOnlyWorldQuery 

Source
pub trait ReadOnlyWorldQuery: WorldQuery { }
Expand description

Marker trait for queries that only read data.

ReadOnlyWorldQuery is a marker trait that indicates a query does not mutate any component data. This enables:

  1. Parallel Execution: Multiple read-only queries can run concurrently
  2. Shared Borrows: Can coexist with other readers of the same component
  3. Query Combination: Read-only queries can be combined more freely

§Safety

Implementors must ensure that the query never mutates component data, even when given a mutable world reference.

§Built-in Implementations

  • &T where T: Component
  • Entity
  • Option<Q> where Q: ReadOnlyWorldQuery
  • Tuples of read-only queries
  • With<T> and Without<T> filters

§Example

use goud_engine::ecs::Entity;
use goud_engine::ecs::query::ReadOnlyWorldQuery;

// Entity is always read-only
fn requires_read_only<Q: ReadOnlyWorldQuery>() {}
requires_read_only::<Entity>();

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 ReadOnlyWorldQuery for ()

Source§

impl<A: ReadOnlyWorldQuery> ReadOnlyWorldQuery for (A,)

Source§

impl<A: ReadOnlyWorldQuery, B: ReadOnlyWorldQuery> ReadOnlyWorldQuery for (A, B)

Source§

impl<A: ReadOnlyWorldQuery, B: ReadOnlyWorldQuery, C: ReadOnlyWorldQuery> ReadOnlyWorldQuery for (A, B, C)

Source§

impl<A: ReadOnlyWorldQuery, B: ReadOnlyWorldQuery, C: ReadOnlyWorldQuery, D: ReadOnlyWorldQuery> ReadOnlyWorldQuery for (A, B, C, D)

Source§

impl<A: ReadOnlyWorldQuery, B: ReadOnlyWorldQuery, C: ReadOnlyWorldQuery, D: ReadOnlyWorldQuery, E: ReadOnlyWorldQuery> ReadOnlyWorldQuery for (A, B, C, D, E)

Source§

impl<A: ReadOnlyWorldQuery, B: ReadOnlyWorldQuery, C: ReadOnlyWorldQuery, D: ReadOnlyWorldQuery, E: ReadOnlyWorldQuery, F: ReadOnlyWorldQuery> ReadOnlyWorldQuery for (A, B, C, D, E, F)

Source§

impl<A: ReadOnlyWorldQuery, B: ReadOnlyWorldQuery, C: ReadOnlyWorldQuery, D: ReadOnlyWorldQuery, E: ReadOnlyWorldQuery, F: ReadOnlyWorldQuery, G: ReadOnlyWorldQuery> ReadOnlyWorldQuery for (A, B, C, D, E, F, G)

Source§

impl<A: ReadOnlyWorldQuery, B: ReadOnlyWorldQuery, C: ReadOnlyWorldQuery, D: ReadOnlyWorldQuery, E: ReadOnlyWorldQuery, F: ReadOnlyWorldQuery, G: ReadOnlyWorldQuery, H: ReadOnlyWorldQuery> ReadOnlyWorldQuery for (A, B, C, D, E, F, G, H)

Source§

impl<Q: ReadOnlyWorldQuery> ReadOnlyWorldQuery for Option<Q>

Source§

impl<T: Component> ReadOnlyWorldQuery for &T

Implementors§