#反射 #动态

xreflect

结构体/枚举的动态反射的基本宏

1个不稳定版本

0.1.0 2024年7月31日

858Rust模式

Download history 99/week @ 2024-07-27 8/week @ 2024-08-03

107 每月下载量

MIT 许可证

5KB

XReflect

反射库

快速入门

use xreflect::Reflect;
// just derive Reflect
#[derive(Reflect)]
pub struct Enemy {
	pub health: u8,
}
#[derive(Reflect)]
pub enum GameState {
	Playing,
	Won { score: i32, remaining_health: u8 },
	Lost(Enemy),
}

fn main() {
	// You can now access and modify fields dynamically
	let mut enemy = Enemy { health: 2 };

	let enemy_health = enemy.get_field::<u8>("health");
	assert_eq!(enemy_health, &2);
	enemy.set_field::<u8>("health", 7);
	assert_eq!(enemy_health, &7);
}

依赖

~275–720KB
~17K SLoC