Expand description
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);
Re-exports§
pub use generator::Generator;
pub use generator::GeneratorBuilder;