#looking #reflection #instance #glass #look #enums #text

looking-glass

looking-glass 是一个为 Rust 提供反射和类型擦除的库

2 个版本

0.1.1 2022年1月7日
0.1.0 2022年1月7日

#1062 in 文本处理

每月 46 次下载
4 crates 中使用

MIT 许可证

42KB
994 代码行

Looking Glass

Looking Glass 为几乎任何 Rust 类型提供反射。这是通过一系列特性和类型擦除枚举来实现的。

该项目最近已开源,稍后将编写更好的文档。目前,查看该项目的最佳方式是克隆它并查看 Rust 文档。虽然该项目最近才开源,但它已经迭代到一个相对稳定的状态。我们不能保证 API 不会改变,尤其是出于好理由。但它目前满足 M10 的所有需求,因此不太可能发生重大变化。

示例

use looking_glass::Typed;
use looking_glass_derive::Instance;

#[derive(Instance, Clone, PartialEq)]
struct Foo {
 text: String,
 int: i32,
}

let test = Foo { text: "Test".to_string(), int: -2 };
let val = test.as_value();
let inst = val.as_reflected_struct().unwrap();
let value  = inst.get_value("text").expect("field not found");
let text = value.as_ref().borrow::<&String>().expect("borrow failed");
assert_eq!(text, &test.text);

依赖项

~0.5–1MB
~21K SLoC