From 656a70e02c456e54557fbe16bc111926c65f2d08 Mon Sep 17 00:00:00 2001 From: Graham Esau Date: Fri, 5 Jun 2020 23:51:54 +0100 Subject: [PATCH] Allow mutable Visitors --- schemars/src/gen.rs | 10 +++++----- schemars/src/visit.rs | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/schemars/src/gen.rs b/schemars/src/gen.rs index ecdc923..7535084 100644 --- a/schemars/src/gen.rs +++ b/schemars/src/gen.rs @@ -236,7 +236,7 @@ impl SchemaGenerator { schema, }; - for visitor in &self.settings.visitors.0 { + for visitor in &mut self.settings.visitors.0 { visitor.visit_root_schema(&mut root) } @@ -256,7 +256,7 @@ impl SchemaGenerator { schema, }; - for visitor in &self.settings.visitors.0 { + for visitor in &mut self.settings.visitors.0 { visitor.visit_root_schema(&mut root) } @@ -330,7 +330,7 @@ pub struct ReplaceBoolSchemas { } impl Visitor for ReplaceBoolSchemas { - fn visit_schema(&self, schema: &mut Schema) { + fn visit_schema(&mut self, schema: &mut Schema) { if let Schema::Bool(b) = *schema { *schema = Schema::Bool(b).into_object().into() } @@ -338,7 +338,7 @@ impl Visitor for ReplaceBoolSchemas { visit_schema(self, schema) } - fn visit_schema_object(&self, schema: &mut SchemaObject) { + fn visit_schema_object(&mut self, schema: &mut SchemaObject) { if self.skip_additional_properties { let mut additional_properties = None; if let Some(obj) = &mut schema.object { @@ -365,7 +365,7 @@ impl Visitor for ReplaceBoolSchemas { pub struct RemoveRefSiblings; impl Visitor for RemoveRefSiblings { - fn visit_schema_object(&self, schema: &mut SchemaObject) { + fn visit_schema_object(&mut self, schema: &mut SchemaObject) { visit_schema_object(self, schema); if let Some(reference) = schema.reference.take() { diff --git a/schemars/src/visit.rs b/schemars/src/visit.rs index 8a2c902..e69a3a6 100644 --- a/schemars/src/visit.rs +++ b/schemars/src/visit.rs @@ -3,33 +3,33 @@ use dyn_clone::DynClone; use std::fmt::Debug; pub trait Visitor: Debug + DynClone { - fn visit_root_schema(&self, root: &mut RootSchema) { + fn visit_root_schema(&mut self, root: &mut RootSchema) { visit_root_schema(self, root) } - fn visit_schema(&self, schema: &mut Schema) { + fn visit_schema(&mut self, schema: &mut Schema) { visit_schema(self, schema) } - fn visit_schema_object(&self, schema: &mut SchemaObject) { + fn visit_schema_object(&mut self, schema: &mut SchemaObject) { visit_schema_object(self, schema) } } dyn_clone::clone_trait_object!(Visitor); -pub fn visit_root_schema(v: &V, root: &mut RootSchema) { +pub fn visit_root_schema(v: &mut V, root: &mut RootSchema) { v.visit_schema_object(&mut root.schema); visit_map_values(v, &mut root.definitions); } -pub fn visit_schema(v: &V, schema: &mut Schema) { +pub fn visit_schema(v: &mut V, schema: &mut Schema) { if let Schema::Object(schema) = schema { v.visit_schema_object(schema) } } -pub fn visit_schema_object(v: &V, schema: &mut SchemaObject) { +pub fn visit_schema_object(v: &mut V, schema: &mut SchemaObject) { if let Some(sub) = &mut schema.subschemas { visit_vec(v, &mut sub.all_of); visit_vec(v, &mut sub.any_of); @@ -54,13 +54,13 @@ pub fn visit_schema_object(v: &V, schema: &mut SchemaObject } } -fn visit_box(v: &V, target: &mut Option>) { +fn visit_box(v: &mut V, target: &mut Option>) { if let Some(s) = target { v.visit_schema(s) } } -fn visit_vec(v: &V, target: &mut Option>) { +fn visit_vec(v: &mut V, target: &mut Option>) { if let Some(vec) = target { for s in vec { v.visit_schema(s) @@ -68,13 +68,13 @@ fn visit_vec(v: &V, target: &mut Option>) { } } -fn visit_map_values(v: &V, target: &mut crate::Map) { +fn visit_map_values(v: &mut V, target: &mut crate::Map) { for s in target.values_mut() { v.visit_schema(s) } } -fn visit_single_or_vec(v: &V, target: &mut Option>) { +fn visit_single_or_vec(v: &mut V, target: &mut Option>) { match target { None => {} Some(SingleOrVec::Single(s)) => v.visit_schema(s),