25 lines
625 B
Rust
25 lines
625 B
Rust
|
|
use schemars::{r#gen::SchemaSettings, JsonSchema};
|
||
|
|
|
||
|
|
#[derive(JsonSchema)]
|
||
|
|
pub struct MyStruct {
|
||
|
|
pub my_int: i32,
|
||
|
|
pub my_bool: bool,
|
||
|
|
pub my_nullable_enum: Option<MyEnum>,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(JsonSchema)]
|
||
|
|
pub enum MyEnum {
|
||
|
|
StringNewType(String),
|
||
|
|
StructVariant { floats: Vec<f32> },
|
||
|
|
}
|
||
|
|
|
||
|
|
fn main() {
|
||
|
|
let settings = SchemaSettings::draft07().with(|s| {
|
||
|
|
s.option_nullable = true;
|
||
|
|
s.option_add_null_type = false;
|
||
|
|
});
|
||
|
|
let generator = settings.into_generator();
|
||
|
|
let schema = generator.into_root_schema_for::<MyStruct>();
|
||
|
|
println!("{}", serde_json::to_string_pretty(&schema).unwrap());
|
||
|
|
}
|