3 unstable releases
0.6.0 | Oct 6, 2021 |
---|---|
0.5.2 | May 18, 2021 |
0.5.1 | Jul 12, 2020 |
#1822 in Encoding
92,715 downloads per month
Used in 60 crates
(10 directly)
46KB
1K
SLoC
This is a Rust crate which can take a json schema (draft
4) and generate Rust types which are
serializable with serde. No checking such as
min_value
are done but instead only the structure of the schema
is followed as closely as possible.
As a schema could be arbitrarily complex this crate makes no guarantee that it can generate good types or even any types at all for a given schema but the crate does manage to bootstrap itself which is kind of cool.
Example
Generated types for VS Codes debug server protocol: https://docs.rs/debugserver-types
Usage
Rust code is generated by providing a Schema
struct (which can be deserialized from JSON).
A proc macro is available in schemafy
crate
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);
Dependencies
~3MB
~63K SLoC