zengine_ecs/system/system_parameter/
query_parameter.rs1use super::{SystemParam, SystemParamFetch};
2use crate::{
3 query::{Query, QueryParameters, QueryRunner},
4 World,
5};
6
7#[doc(hidden)]
8pub struct QueryState<T: QueryParameters> {
9 query_runner: QueryRunner<T>,
10}
11
12impl<T: QueryParameters> Default for QueryState<T> {
13 fn default() -> Self {
14 Self {
15 query_runner: QueryRunner::default(),
16 }
17 }
18}
19
20impl<'a, T: QueryParameters> SystemParamFetch<'a> for QueryState<T> {
21 type Item = Query<'a, T>;
22
23 fn fetch(&mut self, world: &'a World) -> Self::Item {
24 self.query_runner.run(world)
25 }
26}
27
28impl<'a, T: QueryParameters> SystemParam for Query<'a, T> {
29 type Fetch = QueryState<T>;
30}