pub struct SchemaGenerator { /* private fields */ }
Expand description
The main type used to generate JSON Schemas.
§Example
use schemars::{JsonSchema, SchemaGenerator};
#[derive(JsonSchema)]
struct MyStruct {
foo: i32,
}
let generator = SchemaGenerator::default();
let schema = generator.into_root_schema_for::<MyStruct>();
Implementations§
Source§impl SchemaGenerator
impl SchemaGenerator
Sourcepub fn new(settings: SchemaSettings) -> SchemaGenerator
pub fn new(settings: SchemaSettings) -> SchemaGenerator
Creates a new SchemaGenerator
using the given settings.
Sourcepub fn settings(&self) -> &SchemaSettings
pub fn settings(&self) -> &SchemaSettings
Borrows the SchemaSettings
being used by this SchemaGenerator
.
§Example
use schemars::SchemaGenerator;
let generator = SchemaGenerator::default();
let settings = generator.settings();
assert_eq!(settings.inline_subschemas, false);
Sourcepub fn subschema_for<T: ?Sized + JsonSchema>(&mut self) -> Schema
pub fn subschema_for<T: ?Sized + JsonSchema>(&mut self) -> Schema
Generates a JSON Schema for the type T
, and returns either the schema itself or a $ref
schema referencing T
’s schema.
If T
is not inlined, this will add T
’s schema to
this generator’s definitions, and return a $ref
schema referencing that schema.
Otherwise, this method behaves identically to JsonSchema::json_schema
.
If T
’s schema depends on any non-inlined schemas, then
this method will add them to the SchemaGenerator
’s schema definitions.
Sourcepub fn definitions(&self) -> &JsonMap<String, Value>
pub fn definitions(&self) -> &JsonMap<String, Value>
Borrows the collection of all non-inlined schemas that have been generated.
The keys of the returned Map
are the schema names, and the
values are the schemas themselves.
Sourcepub fn definitions_mut(&mut self) -> &mut JsonMap<String, Value>
pub fn definitions_mut(&mut self) -> &mut JsonMap<String, Value>
Mutably borrows the collection of all non-inlined schemas that have been generated.
The keys of the returned Map
are the schema names, and the
values are the schemas themselves.
Sourcepub fn take_definitions(
&mut self,
apply_transforms: bool,
) -> JsonMap<String, Value>
pub fn take_definitions( &mut self, apply_transforms: bool, ) -> JsonMap<String, Value>
Returns the collection of all non-inlined schemas that
have been generated, leaving an empty Map
in its place.
The keys of the returned Map
are the schema names, and the
values are the schemas themselves.
To apply this generator’s transforms to each of the returned
schemas, set apply_transforms
to true
.
Sourcepub fn transforms_mut(&mut self) -> impl Iterator<Item = &mut dyn GenTransform>
pub fn transforms_mut(&mut self) -> impl Iterator<Item = &mut dyn GenTransform>
Returns an iterator over the transforms being used by this
SchemaGenerator
.
Sourcepub fn root_schema_for<T: ?Sized + JsonSchema>(&mut self) -> Schema
pub fn root_schema_for<T: ?Sized + JsonSchema>(&mut self) -> Schema
Generates a JSON Schema for the type T
.
If T
’s schema depends on any non-inlined schemas, then
this method will include them in the returned Schema
at the definitions
path (by default "$defs"
).
Sourcepub fn into_root_schema_for<T: ?Sized + JsonSchema>(self) -> Schema
pub fn into_root_schema_for<T: ?Sized + JsonSchema>(self) -> Schema
Consumes self
and generates a JSON Schema for the type T
.
If T
’s schema depends on any non-inlined schemas, then
this method will include them in the returned Schema
at the definitions
path (by default "$defs"
).
Sourcepub fn root_schema_for_value<T: ?Sized + Serialize>(
&mut self,
value: &T,
) -> Result<Schema, Error>
pub fn root_schema_for_value<T: ?Sized + Serialize>( &mut self, value: &T, ) -> Result<Schema, Error>
Generates a JSON Schema for the given example value.
If the value implements JsonSchema
, then prefer using the
root_schema_for()
function 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 will return an Err
.
Sourcepub fn into_root_schema_for_value<T: ?Sized + Serialize>(
self,
value: &T,
) -> Result<Schema, Error>
pub fn into_root_schema_for_value<T: ?Sized + Serialize>( self, value: &T, ) -> Result<Schema, Error>
Consumes self
and generates a JSON Schema for the given example value.
If the value implements JsonSchema
, then prefer using the
into_root_schema_for()!
function 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 will return an Err
.