summaryrefslogtreecommitdiff
path: root/vendor/schemars/src/json_schema_impls/arrayvec07.rs
blob: fc72777c0aa44d3e0783d6024961285c7a610385 (plain)
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
use crate::SchemaGenerator;
use crate::_alloc_prelude::*;
use crate::{json_schema, JsonSchema, Schema};
use arrayvec07::{ArrayString, ArrayVec};

// Do not set maxLength on the schema as that describes length in characters, but we only
// know max length in bytes.
forward_impl!((<const CAP: usize> JsonSchema for ArrayString<CAP>) => String);

impl<T, const CAP: usize> JsonSchema for ArrayVec<T, CAP>
where
    T: JsonSchema,
{
    inline_schema!();

    fn schema_name() -> alloc::borrow::Cow<'static, str> {
        format!("Array_up_to_size_{}_of_{}", CAP, T::schema_name()).into()
    }

    fn json_schema(generator: &mut SchemaGenerator) -> Schema {
        json_schema!({
            "type": "array",
            "items": generator.subschema_for::<T>(),
            "maxItems": CAP
        })
    }
}