1#![allow(unused)]
3#![allow(dead_code)]
4
5use nya_ecs::{
6 ComponentKey, Filter, Query, Queryable as _, World, component, component_id, query::Exclude,
7};
8
9struct Tag;
10component!(Tag);
11
12struct Name(&'static str);
13component!(Name);
14
15struct Num(usize);
16component!(Num);
17
18fn main() {
19 let mut world = World::new();
20
21 for i in 0..5 {
22 let ent = world.spawn();
23
24 world.add(ent, Tag);
25 world.add(ent, Name("Object"));
26
27 if i % 2 == 0 {
28 world.add(ent, Num(i));
29 }
30 }
31
32 {
33 let ent = world.spawn();
34 world.add(ent, Num(1337));
35 }
36
37 let query = world.query::<(Tag, Num)>();
39 for e in &query {
40 println!("Entity #{e} has both `Tag` and `Num`");
41 }
42
43 for e in &world.query::<(Tag, Exclude<(Num,)>)>() {
45 println!("Entity #{e} has `Tag` without `Num`");
46 }
47
48 let filter = Filter::new()
54 .with_include(&[ComponentKey::of::<Tag>(), ComponentKey::of::<Name>()])
55 .with_exclude(&[component_id!(Num)]);
56
57 for _ in &world.query_filter(filter) {
58 }
60}