schemars/json_schema_impls/
jiff02.rs1use crate::{json_schema, JsonSchema, Schema, SchemaGenerator};
2use alloc::borrow::Cow;
3use jiff02::civil::{Date, DateTime, Time};
4use jiff02::{SignedDuration, Span, Timestamp, Zoned};
5
6macro_rules! formatted_string_impl {
7 ($ty:ident, $format:literal) => {
8 formatted_string_impl!($ty, $format, JsonSchema for $ty);
9 };
10 ($ty:ident, $format:literal, $($desc:tt)+) => {
11 impl $($desc)+ {
12 inline_schema!();
13
14 fn schema_name() -> Cow<'static, str> {
15 stringify!($ty).into()
16 }
17
18 fn schema_id() -> Cow<'static, str> {
19 stringify!(jiff::$ty).into()
20 }
21
22 fn json_schema(_: &mut SchemaGenerator) -> Schema {
23 json_schema!({
24 "type": "string",
25 "format": $format
26 })
27 }
28 }
29 };
30}
31
32formatted_string_impl!(SignedDuration, "duration");
33formatted_string_impl!(Span, "duration");
34formatted_string_impl!(Timestamp, "date-time");
35formatted_string_impl!(Zoned, "zoned-date-time");
36formatted_string_impl!(Date, "date");
37formatted_string_impl!(Time, "partial-time");
38formatted_string_impl!(DateTime, "partial-date-time");