3 个不稳定版本
0.2.0 | 2022年8月25日 |
---|---|
0.1.1 | 2022年8月12日 |
0.1.0 | 2022年8月12日 |
#64 in #reflection
76KB
1.5K SLoC
Bevy Reflection on Steroids
是 bevy_reflect
包的一系列补充扩展,该包为 Bevy 游戏引擎的部分功能提供支持。
bevy_reflect
为 Rust 结构体提供了一个通用的反射框架,并提供了对 traits 的基本支持。
亮点
- 与
bevy_reflect
无缝集成。 - 包含一个全局注册类型的设施,无需显式调用
TypeRegistry::register()
。此功能由 "inventory" 包的功能控制,默认启用。请参阅enable_global_type_registration
。 - 包含执行泛型动态转换的设施,填补了 Rust 语言的漏洞(类似于 C++ 的
dynamic_cast
)。请参阅Cast
trait。 - 包含类似
downcast-rs
的功能,但使用Reflect
trait 代替Any
。请参阅DowncastReflect
。 - 对不透明 trait 对象进行序列化和反序列化(类似于
typetag
)。
此包提供了一种更直观、更易于用户交互的方式,通过任意 trait 对象与反射类型进行交互。
通过为 dyn MyTrait
实现 DynamicTrait
,使得该类型的所有动态特征对象引用都可以使用反射功能。唯一的要求是该特征具有 DowncastReflect
作为超特征,并且在代码中存在对宏 impl_dynamic_trait!(MyTrait, ReflectMyTrait)
的调用。
依赖项
~3–10MB
~101K SLoC