diff --git a/Cargo.toml b/Cargo.toml index f6813a0..2919c7a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,10 +23,12 @@ default = ["std"] no_unsafe = [] std = [] bitstring = ["dep:bitstring"] +jsonschema = ["dep:schemars"] serde = ["dep:serde"] [dependencies] bitstring = { version = "0.2.0", optional = true, features = ["net"] } +schemars = { version = "1.2", optional = true } serde = { version = "1.0.210", optional = true, default-features = false } [dev-dependencies] diff --git a/src/cidr/any.rs b/src/cidr/any.rs index cf91bc3..b2da444 100644 --- a/src/cidr/any.rs +++ b/src/cidr/any.rs @@ -31,6 +31,7 @@ use crate::{ /// /// [`Cidr`]: crate::Cidr #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)] +#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))] pub enum AnyIpCidr { /// "any" network containing all IPv4 and IPv6 addresses Any, diff --git a/src/cidr/mod.rs b/src/cidr/mod.rs index 53f40f3..dd1a871 100644 --- a/src/cidr/mod.rs +++ b/src/cidr/mod.rs @@ -22,6 +22,7 @@ use core::net::{ /// /// [`Cidr`]: crate::Cidr #[derive(Clone, Copy, PartialEq, Eq, Hash)] +#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))] pub struct Ipv4Cidr { pub(crate) address: Ipv4Addr, pub(crate) network_length: u8, @@ -33,6 +34,7 @@ pub struct Ipv4Cidr { /// /// [`Cidr`]: crate::Cidr #[derive(Clone, Copy, PartialEq, Eq, Hash)] +#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))] pub struct Ipv6Cidr { pub(crate) address: Ipv6Addr, pub(crate) network_length: u8, @@ -42,6 +44,7 @@ pub struct Ipv6Cidr { /// /// [`Cidr`]: crate::Cidr #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)] +#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))] pub enum IpCidr { /// IPv4 network V4(Ipv4Cidr),