3 个不稳定版本
0.6.0 | 2021 年 10 月 6 日 |
---|---|
0.5.2 | 2021 年 5 月 18 日 |
0.5.1 | 2020 年 7 月 12 日 |
#1525 in 编码
85,779 monthly downloads
在 56 个 crate 中使用 (10 直接)
46KB
1K SLoC
这是一个 Rust 包,可以从 json 模式 (草案 4) 生成 Rust 类型,这些类型可以使用 serde 进行序列化。不执行诸如 min_value
的检查,而是尽可能紧密地遵循模式的结构。
由于模式可能非常复杂,这个包不保证可以为给定的模式生成好的类型,甚至不能保证生成任何类型,但这个包确实能够自我启动,这相当酷。
示例
为 VS Codes 调试服务器协议 生成的类型:https://docs.rs/debugserver-types
使用方法
通过提供可以反序列化为 JSON 的 Schema
结构体 (Schema) 来生成 Rust 代码。
在 schemafy
包中提供进程宏
extern crate serde;
extern crate schemafy_core;
extern crate serde_json;
use serde::{Serialize, Deserialize};
use schemafy_lib::Expander;
let json = std::fs::read_to_string("src/schema.json").expect("Read schema JSON file");
let schema = serde_json::from_str(&json).unwrap();
let mut expander = Expander::new(
Some("Schema"),
"::schemafy_core::",
&schema,
);
let code = expander.expand(&schema);
依赖
~1.2–2MB
~40K SLoC