/// Generates a [`RootSchema`](crate::schema::RootSchema) for the given type using default settings. /// /// The type must implement [`JsonSchema`](crate::JsonSchema). /// /// # Example /// ``` /// use schemars::{schema_for, JsonSchema}; /// /// #[derive(JsonSchema)] /// struct MyStruct { /// foo: i32, /// } /// /// let my_schema = schema_for!(MyStruct); /// ``` #[cfg(doc)] #[macro_export] macro_rules! schema_for { ($type:ty) => { $crate::gen::SchemaGenerator::default().into_root_schema_for::<$type>() }; } /// Generates a [`RootSchema`](crate::schema::RootSchema) for the given type using default settings. /// /// The type must implement [`JsonSchema`](crate::JsonSchema). /// /// # Example /// ``` /// use schemars::{schema_for, JsonSchema}; /// /// #[derive(JsonSchema)] /// struct MyStruct { /// foo: i32, /// } /// /// let my_schema = schema_for!(MyStruct); /// ``` #[cfg(not(doc))] #[macro_export] macro_rules! schema_for { ($type:ty) => { $crate::gen::SchemaGenerator::default().into_root_schema_for::<$type>() }; ($_:expr) => { compile_error!("This argument to `schema_for!` is not a type - did you mean to use `schema_for_value!` instead?") }; } /// Generates a [`RootSchema`](crate::schema::RootSchema) for the given example value using default settings. /// /// The value must implement [`Serialize`](serde::Serialize). If the value also implements [`JsonSchema`](crate::JsonSchema), /// then prefer using the [`schema_for!`](schema_for) macro which will generally produce a more precise schema, /// particularly when the value contains any enums. /// /// If the `Serialize` implementation of the value decides to fail, this macro will panic. /// For a non-panicking alternative, create a [`SchemaGenerator`](crate::gen::SchemaGenerator) and use /// its [`into_root_schema_for_value`](crate::gen::SchemaGenerator::into_root_schema_for_value) method. /// /// # Example /// ``` /// use schemars::schema_for_value; /// /// #[derive(serde::Serialize)] /// struct MyStruct { /// foo: i32, /// } /// /// let my_schema = schema_for_value!(MyStruct { foo: 123 }); /// ``` #[macro_export] macro_rules! schema_for_value { ($value:expr) => { $crate::gen::SchemaGenerator::default() .into_root_schema_for_value(&$value) .unwrap() }; }