Expand description

Contains the Visitor trait, used to recursively modify a constructed schema and its subschemas.

Sometimes you may want to apply a change to a schema, as well as all schemas contained within it. The easiest way to achieve this is by defining a type that implements Visitor. All methods of Visitor have a default implementation that makes no change but recursively visits all subschemas. When overriding one of these methods, you will usually want to still call this default implementation.

Example

To add a custom property to all schemas:

use schemars::schema::SchemaObject;
use schemars::visit::{Visitor, visit_schema_object};

pub struct MyVisitor;

impl Visitor for MyVisitor {
    fn visit_schema_object(&mut self, schema: &mut SchemaObject) {
        // First, make our change to this schema
        schema.extensions.insert("my_property".to_string(), serde_json::json!("hello world"));

        // Then delegate to default implementation to visit any subschemas
        visit_schema_object(self, schema);
    }
}

Structs

This visitor will restructure JSON Schema objects so that the $ref property will never appear alongside any other properties.

This visitor will replace all boolean JSON Schemas with equivalent object schemas.

This visitor will remove the examples schema property and (if present) set its first value as the example property.

Traits

Trait used to recursively modify a constructed schema and its subschemas.

Functions

Visits all subschemas of the RootSchema.

Visits all subschemas of the Schema.

Visits all subschemas of the SchemaObject.