Implement JsonSchema for nonzero unsigned ints
This commit is contained in:
parent
cc896739d3
commit
a35b469475
2 changed files with 47 additions and 2 deletions
|
@ -32,16 +32,17 @@ macro_rules! forward_impl {
|
|||
}
|
||||
|
||||
mod array;
|
||||
#[cfg(std_atomic)]
|
||||
mod atomic;
|
||||
#[cfg(feature = "chrono")]
|
||||
mod chrono;
|
||||
mod core;
|
||||
mod ffi;
|
||||
mod maps;
|
||||
mod nonzero_unsigned;
|
||||
mod primitives;
|
||||
mod sequences;
|
||||
mod serdejson;
|
||||
mod time;
|
||||
mod tuple;
|
||||
mod wrapper;
|
||||
#[cfg(std_atomic)]
|
||||
mod atomic;
|
44
schemars/src/json_schema_impls/nonzero_unsigned.rs
Normal file
44
schemars/src/json_schema_impls/nonzero_unsigned.rs
Normal file
|
@ -0,0 +1,44 @@
|
|||
use crate::gen::SchemaGenerator;
|
||||
use crate::schema::*;
|
||||
use crate::JsonSchema;
|
||||
use std::num::*;
|
||||
|
||||
macro_rules! nonzero_unsigned_impl {
|
||||
($type:ty => $primitive:ty) => {
|
||||
impl JsonSchema for $type {
|
||||
no_ref_schema!();
|
||||
|
||||
fn schema_name() -> String {
|
||||
stringify!($type).to_owned()
|
||||
}
|
||||
|
||||
fn json_schema(gen: &mut SchemaGenerator) -> Schema {
|
||||
let mut schema: SchemaObject = <$primitive>::json_schema(gen).into();
|
||||
schema.number().minimum = Some(1.0);
|
||||
schema.into()
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
nonzero_unsigned_impl!(NonZeroU8 => u8);
|
||||
nonzero_unsigned_impl!(NonZeroU16 => u16);
|
||||
nonzero_unsigned_impl!(NonZeroU32 => u32);
|
||||
nonzero_unsigned_impl!(NonZeroU64 => u64);
|
||||
nonzero_unsigned_impl!(NonZeroU128 => u128);
|
||||
nonzero_unsigned_impl!(NonZeroUsize => usize);
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::tests::schema_object_for;
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
#[test]
|
||||
fn schema_for_atomics() {
|
||||
let schema = schema_object_for::<NonZeroU32>();
|
||||
assert_eq!(schema.number.unwrap().minimum, Some(1.0));
|
||||
assert_eq!(schema.instance_type, Some(InstanceType::Integer.into()));
|
||||
assert_eq!(schema.format, Some("uint32".to_owned()));
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue