1 个不稳定版本
0.1.0 | 2024年6月26日 |
---|
#1845 在 Rust 模式
30KB
279 行
Reflectix
概述
Reflectix 是一个 Rust 包,它提供了原始的运行时类型反射。它允许你在运行时检查和操作类型,使你的 Rust 程序能够实现动态行为。
示例
#[derive(reflectix::TypeInfo, Default)]
pub struct Foo {
pub x: i32,
pub y: i32,
}
pub fn modify_field_of_erased(obj: &mut dyn reflectix::TypeInfoDynamic) {
let field = obj.field_mut("x".into()).unwrap();
let ref_field = field.downcast_mut::<i32>().unwrap();
*ref_field = 42;
}
pub fn main() {
let mut foo = Foo::default();
let erased = &mut foo;
modify_field_of_erased(erased);
assert_eq!(foo.x, 42);
}
功能
-
类型反射: Reflectix 允许你在运行时对类型进行反射,提供有关其结构、字段等信息。
-
类型操作: Reflectix 提供了在运行时操作类型的工具,例如创建新实例、修改现有对象和检查类型层次结构。
安装
要在你的 Rust 项目中使用 Reflectix,请将以下行添加到你的 Cargo.toml
文件中
[dependencies]
Reflectix = "0.1"
依赖项
~275–740KB
~17K SLoC