1 个不稳定版本
0.1.0 | 2020年4月12日 |
---|
#62 在 #introspection
用于 spectacle
11KB
227 行
Spectacle
Spectacle
递归遍历它被调用的结构体,访问每个结构体字段、枚举变体等。它通过 Any
特性 运作。它还包括描述如何从根对象到达当前位置的访问器和选择器的跟踪。有了这两样东西,就可以轻松找到并访问感兴趣的数据部分。
通常不应首先使用反射工具。然而,在某些情况下,它们是不可或缺的。这个crate的发明是由以下用例激发的:编写一个强类型化的serde编解码器,用于大型、复杂、深度嵌套且未充分指定的JSON数据块。从外部开始编写最外层容器类型没有太多困难。然而,确定某些不常见内部字段适当类型是复杂的,因为有许多示例,深度嵌套。
解决方案是进行反射,特别是访问所有仍然是 serde_json::Value
的值。通过打印每个值的表示,可以找到适当的编码方式。
功能
-
Spectacle
特性:对包含字段、变体等的访问者 -
实现 Spectacle对于 $primitive
- (默认) 特性门控
impl Spectacle for $collection
- 特性门控
impl Spectacle for serde_json::Value
-
#[派生(Spectacle)]
依赖项
~1.5MB
~35K SLoC