2个不稳定版本

0.2.0 2020年4月12日
0.1.0 2020年4月10日

#1658 in 数据结构

LGPL-3.0

80KB
307

Spectacle

Opt-in Runtime Introspection

Spectacle递归遍历它被调用的结构,访问每个结构字段、枚举变体等。它通过Any特质操作。它还包括访问器和选择器的轨迹,描述如何从根对象到达当前位置。有了这两样东西,就可以轻松找到并访问感兴趣的数据部分。

通常情况下,检查不应是首选工具。然而,有时它们是不可或缺的。这个crate的发明动机是:编写一个强类型化的serde编解码器,用于大型、复杂、深度嵌套、未详细说明的JSON数据块。从外部向内部工作,可以轻松编写最外层容器的类型。然而,确定某些不常见内部字段的适当类型很复杂,因为有大量示例,深度嵌套。

解决方案是进行检查,特别访问所有仍然是serde_json::Value的值。通过打印每个值的表示,可以发现适当的编码方式。

This is not a crisis, this is an opportunity... for INTROSPECTION!

恐龙漫画 by Ryan North

特性

  • Spectacle特质:包含字段、变体等的访问者
  • impl Spectaclefor $primitive
  • (默认)功能门控 impl Spectacle for $collection
  • 功能门控 impl Spectacle for serde_json::Value
  • #[derive(Spectacle)]

依赖关系

~2.5MB
~63K SLoC