diff --git a/schemars/src/lib.rs b/schemars/src/lib.rs index 587a0ee..99195cc 100644 --- a/schemars/src/lib.rs +++ b/schemars/src/lib.rs @@ -2,6 +2,9 @@ pub mod gen; pub mod make_schema; pub mod schema; +#[macro_use] +mod macros; + pub use make_schema::MakeSchema; pub use schemars_derive::*; diff --git a/schemars/src/macros.rs b/schemars/src/macros.rs new file mode 100644 index 0000000..83bdcd2 --- /dev/null +++ b/schemars/src/macros.rs @@ -0,0 +1,6 @@ +#[macro_export()] +macro_rules! schema_for { + ($($type:tt)+) => { + $crate::gen::SchemaGenerator::new().into_root_schema_for::<$($type)+>() + }; +} diff --git a/schemars/src/main.rs b/schemars/src/main.rs index d7e4774..079039d 100644 --- a/schemars/src/main.rs +++ b/schemars/src/main.rs @@ -1,9 +1,9 @@ -use schemars::*; +use schemars::schema_for; +use schemars::schema::Schema; use serde_json::Result; fn main() -> Result<()> { - let gen = gen::SchemaGenerator::new(); - let schema = gen.into_root_schema_for::(); + let schema = schema_for!(Schema); let json = serde_json::to_string_pretty(&schema)?; println!("{}", json); diff --git a/schemars/tests/test.rs b/schemars/tests/test.rs index 3f3087c..13e8502 100644 --- a/schemars/tests/test.rs +++ b/schemars/tests/test.rs @@ -1,5 +1,5 @@ -use schemars::gen::SchemaGenerator; use schemars::schema::*; +use schemars::schema_for; use serde_json::{from_str, to_string_pretty}; use std::fs; @@ -12,8 +12,7 @@ mod tests { let expected_json = fs::read_to_string("tests/schema.json")?; let expected: Schema = from_str(&expected_json)?; - let gen = SchemaGenerator::new(); - let actual = gen.into_root_schema_for::(); + let actual = schema_for!(Schema); fs::write("tests/schema.actual.json", to_string_pretty(&actual)?)?; assert_eq!(actual, expected, "\n\nGenerated schema did not match saved schema - generated schema has been written to \"tests/schema.actual.json\".");