From b334bef91a28f452431966ccf05ebc41acb797a6 Mon Sep 17 00:00:00 2001 From: Graham Esau Date: Sun, 27 Oct 2019 21:24:29 +0000 Subject: [PATCH] Implement JsonSchema for std::net types --- schemars/src/json_schema_impls/core.rs | 12 +++++++++ schemars/src/json_schema_impls/primitives.rs | 26 +++++++++----------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/schemars/src/json_schema_impls/core.rs b/schemars/src/json_schema_impls/core.rs index ccdcd57..a0426e7 100644 --- a/schemars/src/json_schema_impls/core.rs +++ b/schemars/src/json_schema_impls/core.rs @@ -115,6 +115,18 @@ impl JsonSchema for std::marker::PhantomData { } } +impl<'a> JsonSchema for std::fmt::Arguments<'a> { + no_ref_schema!(); + + fn schema_name() -> String { + ::schema_name() + } + + fn json_schema(gen: &mut SchemaGenerator) -> Schema { + ::json_schema(gen) + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/schemars/src/json_schema_impls/primitives.rs b/schemars/src/json_schema_impls/primitives.rs index a38a9fe..fc2665b 100644 --- a/schemars/src/json_schema_impls/primitives.rs +++ b/schemars/src/json_schema_impls/primitives.rs @@ -1,6 +1,7 @@ use crate::gen::SchemaGenerator; use crate::schema::*; use crate::JsonSchema; +use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6}; use std::path::{Path, PathBuf}; macro_rules! simple_impl { @@ -32,8 +33,6 @@ macro_rules! simple_impl { simple_impl!(str => String); simple_impl!(String => String); -simple_impl!(Path => String); -simple_impl!(PathBuf => String); simple_impl!(bool => Boolean); simple_impl!(f32 => Number, "float"); simple_impl!(f64 => Number, "double"); @@ -51,6 +50,17 @@ simple_impl!(u128 => Integer, "uint128"); simple_impl!(usize => Integer, "uint"); simple_impl!(() => Null); +simple_impl!(Path => String); +simple_impl!(PathBuf => String); + +simple_impl!(Ipv4Addr => String, "ipv4"); +simple_impl!(Ipv6Addr => String, "ipv6"); +simple_impl!(IpAddr => String, "ip"); + +simple_impl!(SocketAddr => String); +simple_impl!(SocketAddrV4 => String); +simple_impl!(SocketAddrV6 => String); + impl JsonSchema for char { no_ref_schema!(); @@ -71,15 +81,3 @@ impl JsonSchema for char { .into() } } - -impl<'a> JsonSchema for std::fmt::Arguments<'a> { - no_ref_schema!(); - - fn schema_name() -> String { - ::schema_name() - } - - fn json_schema(gen: &mut SchemaGenerator) -> Schema { - ::json_schema(gen) - } -}