Struct schemars::gen::SchemaSettings
source · #[non_exhaustive]pub struct SchemaSettings {
pub option_nullable: bool,
pub option_add_null_type: bool,
pub definitions_path: String,
pub meta_schema: Option<String>,
pub visitors: Vec<Box<dyn GenVisitor>>,
pub inline_subschemas: 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.option_nullable: bool
If true
, schemas for Option<T>
will include a nullable
property.
This is not part of the JSON Schema spec, but is used in Swagger/OpenAPI schemas.
Defaults to false
.
option_add_null_type: bool
If true
, schemas for Option<T>
will have null
added to their type
property.
Defaults to true
.
definitions_path: String
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<String>
The URI of the meta-schema describing the structure of the generated schemas.
Defaults to "https://json-schema.org/draft/2020-12/schema"
.
visitors: Vec<Box<dyn GenVisitor>>
A list of visitors that get applied to all generated schemas.
inline_subschemas: bool
Inline all subschemas instead of using references.
Some references may still be generated in schemas for recursive types.
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::gen::{SchemaGenerator, SchemaSettings};
let settings = SchemaSettings::default().with(|s| {
s.option_nullable = true;
s.option_add_null_type = false;
});
let gen = settings.into_generator();
sourcepub fn with_visitor(
self,
visitor: impl Visitor + Debug + Clone + 'static,
) -> Self
pub fn with_visitor( self, visitor: impl Visitor + Debug + Clone + 'static, ) -> Self
Appends the given visitor to the list of visitors for these SchemaSettings
.
sourcepub fn into_generator(self) -> SchemaGenerator
pub fn into_generator(self) -> SchemaGenerator
Creates a new SchemaGenerator
using these settings.
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 the SchemaSettings::draft2020_12()
method.