Skip to main content

iddqd/id_ord_map/
schemars_impls.rs

1//! Schemars implementations for IdOrdMap.
2
3use crate::{
4    id_ord_map::{
5        imp::IdOrdMap, serde_impls::IdOrdMapAsMap, trait_defs::IdOrdItem,
6    },
7    support::schemars_utils::{create_map_schema, create_object_schema},
8};
9use alloc::string::String;
10use schemars::{JsonSchema, r#gen::SchemaGenerator, schema::Schema};
11
12impl<T> JsonSchema for IdOrdMap<T>
13where
14    T: JsonSchema + IdOrdItem,
15{
16    fn schema_name() -> String {
17        alloc::format!("IdOrdMap_of_{}", T::schema_name())
18    }
19
20    fn json_schema(generator: &mut SchemaGenerator) -> Schema {
21        create_map_schema::<T>("IdOrdMap", "iddqd::IdOrdMap", generator)
22    }
23
24    fn is_referenceable() -> bool {
25        false
26    }
27}
28
29impl<T> JsonSchema for IdOrdMapAsMap<T>
30where
31    T: JsonSchema + IdOrdItem,
32{
33    fn schema_name() -> String {
34        alloc::format!("IdOrdMapAsMap_of_{}", T::schema_name())
35    }
36
37    fn json_schema(generator: &mut SchemaGenerator) -> Schema {
38        create_object_schema::<T>("IdOrdMapAsMap", "iddqd::IdOrdMap", generator)
39    }
40
41    fn is_referenceable() -> bool {
42        false
43    }
44}