Bevy 是一个新的 Rust 游戏引擎和 ECS,它有一个特性,可以根据参数类型来 "范围化" 它的系统。来自它的文档:
我们传递给 "系统函数" 的参数定义了系统运行的实体。在这种情况下,greet_people 将在所有具有 Person 和 Name 组件的实体上运行。
它看起来像这样:
struct Person;
struct Name(String);
fn greet_people(person: &Person, name: &Name) {
println!("hello {}", name.0);
}
Bevy是如何实现这一点的?我记得在某个地方看到过Rust并不支持这种方式的反射。