#[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 Transform
s that get applied to generated root schemas.
Defaults to an empty vec (no transforms).
inline_subschemas: bool
Inline all subschemas instead of using references.
Some references may still be generated in schemas for recursive types.
Defaults to false
.
contract: Contract
Whether the generated schemas should describe how types are serialized or deserialized.
Defaults to Contract::Deserialize
.
untagged_enum_variant_titles: bool
Whether 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§fn clone(&self) -> SchemaSettings
fn clone(&self) -> SchemaSettings
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§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.