#[non_exhaustive]pub struct SchemaSettings {
pub definitions_path: Cow<'static, str>,
pub meta_schema: Option<Cow<'static, str>>,
pub transforms: Vec<Box<dyn GenTransform>>,
pub inline_subschemas: bool,
pub contract: Contract,
pub untagged_enum_variant_titles: bool,
}Expand description
Settings to customize how Schemas are generated.
The default settings currently conform to JSON Schema 2020-12, but this is liable to change in a future version of Schemars if support for other JSON Schema versions is added.
If you rely on generated schemas conforming to draft 2020-12, consider using the
SchemaSettings::draft2020_12() method.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.definitions_path: Cow<'static, str>A JSON pointer to the expected location of referenceable subschemas within the resulting root schema.
A single leading # and/or single trailing / are ignored.
Defaults to "/$defs".
meta_schema: Option<Cow<'static, str>>The URI of the meta-schema describing the structure of the generated schemas.
Defaults to meta_schemas::DRAFT2020_12 (https://json-schema.org/draft/2020-12/schema).
transforms: Vec<Box<dyn GenTransform>>A list of Transforms that get applied to generated root schemas.
Defaults to an empty vec (no transforms).
inline_subschemas: boolInline all subschemas instead of using references.
Some references may still be generated in schemas for recursive types.
Defaults to false.
contract: ContractWhether the generated schemas should describe how types are serialized or deserialized.
Defaults to Contract::Deserialize.
untagged_enum_variant_titles: boolWhether to include enum variant names in their schema’s title when using the untagged
enum representation.
This setting is respected by #[derive(JsonSchema)] on enums, but manual implementations
of JsonSchema may ignore this setting.
Defaults to false.
Implementations§
Source§impl SchemaSettings
impl SchemaSettings
Sourcepub fn draft07() -> SchemaSettings
pub fn draft07() -> SchemaSettings
Creates SchemaSettings that conform to JSON Schema Draft 7.
Sourcepub fn draft2019_09() -> SchemaSettings
pub fn draft2019_09() -> SchemaSettings
Creates SchemaSettings that conform to JSON Schema 2019-09.
Sourcepub fn draft2020_12() -> SchemaSettings
pub fn draft2020_12() -> SchemaSettings
Creates SchemaSettings that conform to JSON Schema 2020-12.
Sourcepub fn openapi3() -> SchemaSettings
pub fn openapi3() -> SchemaSettings
Creates SchemaSettings that conform to OpenAPI 3.0.
Sourcepub fn with(self, configure_fn: impl FnOnce(&mut Self)) -> Self
pub fn with(self, configure_fn: impl FnOnce(&mut Self)) -> Self
Modifies the SchemaSettings by calling the given function.
§Example
use schemars::generate::{SchemaGenerator, SchemaSettings};
let settings = SchemaSettings::default().with(|s| {
s.meta_schema = None;
s.inline_subschemas = true;
});
let generator = settings.into_generator();Sourcepub fn with_transform(
self,
transform: impl Transform + Clone + 'static + Send,
) -> Self
pub fn with_transform( self, transform: impl Transform + Clone + 'static + Send, ) -> Self
Appends the given transform to the list of transforms for
these SchemaSettings.
Sourcepub fn into_generator(self) -> SchemaGenerator
pub fn into_generator(self) -> SchemaGenerator
Creates a new SchemaGenerator using these settings.
Sourcepub fn for_deserialize(self) -> Self
pub fn for_deserialize(self) -> Self
Updates the settings to generate schemas describing how types are deserialized.
Sourcepub fn for_serialize(self) -> Self
pub fn for_serialize(self) -> Self
Updates the settings to generate schemas describing how types are serialized.
Trait Implementations§
Source§impl Clone for SchemaSettings
impl Clone for SchemaSettings
Source§impl Debug for SchemaSettings
impl Debug for SchemaSettings
Source§impl Default for SchemaSettings
impl Default for SchemaSettings
Source§fn default() -> SchemaSettings
fn default() -> SchemaSettings
The default settings currently conform to JSON Schema 2020-12,
but this is liable to change in a future version of Schemars if support for other JSON Schema versions is added.
If you rely on generated schemas conforming to draft 2020-12, consider using SchemaSettings::draft2020_12() instead.