Module schemars::visit[][src]

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

RemoveRefSiblings

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

ReplaceBoolSchemas

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

SetSingleExample

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

Traits

Visitor

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

Functions

visit_root_schema

Visits all subschemas of the RootSchema.

visit_schema

Visits all subschemas of the Schema.

visit_schema_object

Visits all subschemas of the SchemaObject.