#run-time #reflection #primitive

reflectix

为 Rust 提供原始运行时类型反射

1 个不稳定版本

0.1.0 2024年6月26日

#1845Rust 模式

GPL-3.0-or-later

30KB
279

Reflectix

Crates.io Documentation License

概述

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