use ecs::pair::Pair; use ecs::phase::START as START_PHASE; use ecs::{Component, Query, World}; #[derive(Component)] struct Person { name: String, } fn print_dog_likers(query: Query<(&Person, Pair)>) { for (person, liked_dogs) in &query { println!( "{} likes {} dogs!", person.name, if liked_dogs.large { "large" } else { "small" }, ); } } #[derive(Component)] struct Likes; #[derive(Component)] struct Cats; #[derive(Component)] struct Dogs { large: bool, } fn main() { let mut world = World::new(); world.register_system(*START_PHASE, print_dog_likers); world.create_entity(( Person { name: "Irving".to_string() }, Pair::new_with_comp_target::(Dogs { large: true }), )); world.create_entity(( Person { name: "Mark".to_string() }, Pair::new_with_comp_target::(Cats), )); world.create_entity(( Person { name: "Helena".to_string() }, Pair::new_with_comp_target::(Dogs { large: false }), )); world.step(); }