Struct SchemaSettings

Source
#[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
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional 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: 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

Source

pub fn draft07() -> SchemaSettings

Creates SchemaSettings that conform to JSON Schema Draft 7.

Source

pub fn draft2019_09() -> SchemaSettings

Creates SchemaSettings that conform to JSON Schema 2019-09.

Source

pub fn draft2020_12() -> SchemaSettings

Creates SchemaSettings that conform to JSON Schema 2020-12.

Source

pub fn openapi3() -> SchemaSettings

Creates SchemaSettings that conform to OpenAPI 3.0.

Source

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();
Source

pub fn with_transform( self, transform: impl Transform + Clone + 'static + Send, ) -> Self

Appends the given transform to the list of transforms for these SchemaSettings.

Source

pub fn into_generator(self) -> SchemaGenerator

Creates a new SchemaGenerator using these settings.

Source

pub fn for_deserialize(self) -> Self

Updates the settings to generate schemas describing how types are deserialized.

Source

pub fn for_serialize(self) -> Self

Updates the settings to generate schemas describing how types are serialized.

Trait Implementations§

Source§

impl Clone for SchemaSettings

Source§

fn clone(&self) -> SchemaSettings

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SchemaSettings

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SchemaSettings

Source§

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.

Source§

impl From<SchemaSettings> for SchemaGenerator

Source§

fn from(settings: SchemaSettings) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.