3 个不稳定版本

0.6.0 2021 年 10 月 6 日
0.5.2 2021 年 5 月 18 日
0.5.1 2020 年 7 月 12 日

#1525 in 编码

Download history 20174/week @ 2024-03-14 19783/week @ 2024-03-21 19752/week @ 2024-03-28 19529/week @ 2024-04-04 20119/week @ 2024-04-11 21428/week @ 2024-04-18 17709/week @ 2024-04-25 19072/week @ 2024-05-02 19410/week @ 2024-05-09 21880/week @ 2024-05-16 17547/week @ 2024-05-23 22651/week @ 2024-05-30 19821/week @ 2024-06-06 21621/week @ 2024-06-13 22488/week @ 2024-06-20 17687/week @ 2024-06-27

85,779 monthly downloads
56 个 crate 中使用 (10 直接)

MIT 许可证

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