examples/queries/
query_variables.rs1use crate::z_ignore_test_common::*;
2
3use flecs_ecs::prelude::*;
4
5#[derive(Component)]
6pub struct Eats;
7
8#[derive(Component)]
9struct Healthy;
10
11fn main() {
12 let world = World::new();
13
14 let apples = world.entity_named("Apples").add(Healthy);
15 let salad = world.entity_named("Salad").add(Healthy);
16 let burgers = world.entity_named("Burgers");
17 let pizza = world.entity_named("Pizza");
18 let chocolate = world.entity_named("Chocolate");
19
20 world
21 .entity_named("Bob")
22 .add((Eats, apples))
23 .add((Eats, burgers))
24 .add((Eats, pizza));
25
26 world
27 .entity_named("Alice")
28 .add((Eats, salad))
29 .add((Eats, chocolate))
30 .add((Eats, apples));
31
32 let rule = world
38 .query::<()>()
39 .with((Eats, "$food"))
50 .with(&Healthy)
51 .set_src("$food")
52 .build();
53
54 let food_var = rule.find_var("food");
57
58 rule.each_iter(|it, index, ()| {
60 println!(
61 "{} eats {}",
62 it.entity(index).name(),
63 it.get_var(food_var.unwrap()).name()
64 );
65 });
66
67 }
72
73#[cfg(feature = "flecs_nightly_tests")]
74#[test]
75fn test() {
76 let output_capture = OutputCapture::capture().unwrap();
77 main();
78 output_capture.test("query_variables".to_string());
79}