diff --git a/schemars/src/json_schema_impls/primitives.rs b/schemars/src/json_schema_impls/primitives.rs index 6a25ede..f51a586 100644 --- a/schemars/src/json_schema_impls/primitives.rs +++ b/schemars/src/json_schema_impls/primitives.rs @@ -6,23 +6,23 @@ use std::path::{Path, PathBuf}; macro_rules! simple_impl { ($type:ty => $instance_type:ident) => { - simple_impl!($type => $instance_type, None); + simple_impl!($type => $instance_type, stringify!($instance_type), None); }; - ($type:ty => $instance_type:ident, $format: literal) => { - simple_impl!($type => $instance_type, Some($format.to_owned())); + ($type:ty => $instance_type:ident, $format:literal) => { + simple_impl!($type => $instance_type, $format, Some($format.to_owned())); }; - ($type:ty => $instance_type:ident, $($format:tt)+) => { + ($type:ty => $instance_type:ident, $name:expr, $format:expr) => { impl JsonSchema for $type { no_ref_schema!(); fn schema_name() -> String { - stringify!($instance_type).to_owned() + $name.to_owned() } fn json_schema(_: &mut SchemaGenerator) -> Schema { SchemaObject { instance_type: Some(InstanceType::$instance_type.into()), - format: $($format)+, + format: $format, ..Default::default() } .into() diff --git a/schemars/tests/expected/range.json b/schemars/tests/expected/range.json index 687e20d..759cf91 100644 --- a/schemars/tests/expected/range.json +++ b/schemars/tests/expected/range.json @@ -8,14 +8,14 @@ ], "properties": { "inclusive": { - "$ref": "#/definitions/Range_Of_Number" + "$ref": "#/definitions/Range_Of_double" }, "range": { - "$ref": "#/definitions/Range_Of_Integer" + "$ref": "#/definitions/Range_Of_uint" } }, "definitions": { - "Range_Of_Integer": { + "Range_Of_double": { "type": "object", "required": [ "end", @@ -23,16 +23,16 @@ ], "properties": { "end": { - "type": "integer", - "format": "uint" + "type": "number", + "format": "double" }, "start": { - "type": "integer", - "format": "uint" + "type": "number", + "format": "double" } } }, - "Range_Of_Number": { + "Range_Of_uint": { "type": "object", "required": [ "end", @@ -40,12 +40,12 @@ ], "properties": { "end": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint" }, "start": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint" } } } diff --git a/schemars/tests/expected/schema-name-custom.json b/schemars/tests/expected/schema-name-custom.json index 3ea21ed..4a3668b 100644 --- a/schemars/tests/expected/schema-name-custom.json +++ b/schemars/tests/expected/schema-name-custom.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "a-new-name-Array_Of_String-Integer-Integer", + "title": "a-new-name-Array_Of_String-int32-int32", "type": "object", "required": [ "inner", diff --git a/schemars/tests/expected/schema-name-default.json b/schemars/tests/expected/schema-name-default.json index cccd711..46c49f4 100644 --- a/schemars/tests/expected/schema-name-default.json +++ b/schemars/tests/expected/schema-name-default.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "MyStruct_For_Integer_And_Null_And_Boolean_And_Array_Of_String", + "title": "MyStruct_For_int32_And_Null_And_Boolean_And_Array_Of_String", "type": "object", "required": [ "inner",