Slightly abstract away map/set types

This commit is contained in:
Graham Esau 2019-08-08 18:43:15 +01:00
parent 998e6c9f0f
commit 8afce08c54
5 changed files with 10 additions and 12 deletions

View file

@ -1,7 +1,6 @@
use crate::make_schema::MakeSchema; use crate::make_schema::MakeSchema;
use crate::schema::*; use crate::schema::*;
use crate::{MakeSchemaError, Result}; use crate::{MakeSchemaError, Map, Result};
use std::collections::BTreeMap as Map;
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
pub struct SchemaSettings { pub struct SchemaSettings {

View file

@ -1,13 +1,15 @@
pub type Map<K, V> = std::collections::BTreeMap<K, V>;
pub type Set<T> = std::collections::BTreeSet<T>;
pub mod gen; pub mod gen;
pub mod make_schema;
pub mod schema; pub mod schema;
mod error; mod error;
mod make_schema;
#[macro_use] #[macro_use]
mod macros; mod macros;
pub use error::*; pub use error::*;
pub use make_schema::MakeSchema; pub use make_schema::MakeSchema;
pub use schemars_derive::*; pub use schemars_derive::*;

View file

@ -1,8 +1,7 @@
use crate::gen::{BoolSchemas, SchemaGenerator}; use crate::gen::{BoolSchemas, SchemaGenerator};
use crate::schema::*; use crate::schema::*;
use crate::Result; use crate::{Map, Result};
use serde_json::json; use serde_json::json;
use std::collections::BTreeMap as Map;
pub trait MakeSchema { pub trait MakeSchema {
fn is_referenceable() -> bool { fn is_referenceable() -> bool {

View file

@ -1,9 +1,7 @@
use crate as schemars; use crate as schemars;
use crate::{MakeSchema, MakeSchemaError, Result}; use crate::{MakeSchema, MakeSchemaError, Map, Result, Set};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use serde_json::Value; use serde_json::Value;
use std::collections::BTreeMap as Map;
use std::collections::BTreeSet as Set;
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, MakeSchema)] #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, MakeSchema)]
#[serde(untagged)] #[serde(untagged)]

View file

@ -135,7 +135,7 @@ fn schema_for_external_tagged_enum(variants: &[Variant], cattrs: &attr::Containe
wrap_schema_fields(quote! { wrap_schema_fields(quote! {
instance_type: Some(schemars::schema::InstanceType::Object.into()), instance_type: Some(schemars::schema::InstanceType::Object.into()),
properties: { properties: {
let mut props = std::collections::BTreeMap::new(); let mut props = schemars::Map::new();
props.insert(#name.to_owned(), #sub_schema); props.insert(#name.to_owned(), #sub_schema);
props props
}, },
@ -198,12 +198,12 @@ fn schema_for_struct(fields: &[Field], cattrs: &attr::Container) -> TokenStream
let schema = wrap_schema_fields(quote! { let schema = wrap_schema_fields(quote! {
instance_type: Some(schemars::schema::InstanceType::Object.into()), instance_type: Some(schemars::schema::InstanceType::Object.into()),
properties: { properties: {
let mut props = std::collections::BTreeMap::new(); let mut props = schemars::Map::new();
#(#recurse)* #(#recurse)*
props props
}, },
required: { required: {
let mut required = std::collections::BTreeSet::new(); let mut required = schemars::Set::new();
#(required.insert(#required.to_owned());)* #(required.insert(#required.to_owned());)*
required required
}, },