use std::marker::PhantomData; use crate::component::Component; use crate::query::{TermWithoutField, TermsBuilder, TermsBuilderInterface}; pub struct With<ComponentT> where ComponentT: Component, { _pd: PhantomData<ComponentT>, } impl<ComponentT> TermWithoutField for With<ComponentT> where ComponentT: Component, { fn apply_to_terms_builder(terms_builder: &mut TermsBuilder<'_>) { terms_builder.with::<ComponentT>(); } } pub struct Without<ComponentT> where ComponentT: Component, { _pd: PhantomData<ComponentT>, } impl<ComponentT> TermWithoutField for Without<ComponentT> where ComponentT: Component, { fn apply_to_terms_builder(terms_builder: &mut TermsBuilder<'_>) { terms_builder.without::<ComponentT>(); } }