1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use crate::gen::SchemaGenerator;
use crate::schema::*;
use crate::JsonSchema;

macro_rules! decimal_impl {
    ($type:ty) => {
        decimal_impl!($type => Number, "Number");
    };
    ($type:ty => $instance_type:ident, $name:expr) => {
        impl JsonSchema for $type {
            no_ref_schema!();

            fn schema_name() -> String {
                $name.to_owned()
            }

            fn json_schema(_: &mut SchemaGenerator) -> Schema {
                SchemaObject {
                    instance_type: Some(InstanceType::$instance_type.into()),
                    ..Default::default()
                }
                .into()
            }
        }
    };
}

#[cfg(feature="rust_decimal")]
decimal_impl!(rust_decimal::Decimal);
#[cfg(feature="bigdecimal")]
decimal_impl!(bigdecimal::BigDecimal);