Skip to main content

JsonSchema

Trait JsonSchema 

pub trait JsonSchema {
    // Required methods
    fn schema_name() -> Cow<'static, str>;
    fn json_schema(generator: &mut SchemaGenerator) -> Schema;

    // Provided methods
    fn inline_schema() -> bool { ... }
    fn schema_id() -> Cow<'static, str> { ... }
}
Expand description

Re-export of the schemars derive macro and trait. Deriving JsonSchema on your Rust type is what makes schema_for / schema_for_yaml produce a schema for it.

§Downstream Cargo.toml

The proc-macro that powers #[derive(JsonSchema)] expands to code that references ::schemars::... paths in the call site’s dep graph. That means downstream crates that derive JsonSchema must add schemars to their own Cargo.toml alongside noyalib:

[dependencies]
noyalib = { version = "0.0.7", features = ["schema"] }
schemars = "1.2"

(Same precedent as serde::Deserialize — derive macros that re-export through a wrapper crate cannot rewrite the generated paths without an explicit #[schemars(crate = "...")] attribute on every type.)

§Examples

use noyalib::JsonSchema;

#[derive(JsonSchema)]
struct Cfg { port: u16 }

A type which can be described as a JSON Schema document.

This is implemented for many Rust primitive and standard library types.

This can also be automatically derived on most custom types with #[derive(JsonSchema)] by enabling the derive feature flag (which is enabled by default). For more info on deriving JsonSchema, see the derive macro documentation.

§Examples

Deriving an implementation:

use schemars::{schema_for, JsonSchema};

#[derive(JsonSchema)]
struct MyStruct {
    foo: i32,
}

let my_schema = schema_for!(MyStruct);

When manually implementing JsonSchema, as well as determining an appropriate schema, you will need to determine an appropriate name and ID for the type. For non-generic types, the type name/path are suitable for this:

use schemars::{SchemaGenerator, Schema, JsonSchema, json_schema};
use std::borrow::Cow;

struct NonGenericType;

impl JsonSchema for NonGenericType {
    fn schema_name() -> Cow<'static, str> {
        // Exclude the module path to make the name in generated schemas clearer.
        "NonGenericType".into()
    }

    fn schema_id() -> Cow<'static, str> {
        // Include the module, in case a type with the same name is in another module/crate
        concat!(module_path!(), "::NonGenericType").into()
    }

    fn json_schema(_gen: &mut SchemaGenerator) -> Schema {
        json_schema!({
            "foo": "bar"
        })
    }
}

assert_eq!(NonGenericType::schema_id(), <&mut NonGenericType>::schema_id());

But generic type parameters which may affect the generated schema should typically be included in the name/ID:

use schemars::{SchemaGenerator, Schema, JsonSchema, json_schema};
use std::{borrow::Cow, marker::PhantomData};

struct GenericType<T>(PhantomData<T>);

impl<T: JsonSchema> JsonSchema for GenericType<T> {
    fn schema_name() -> Cow<'static, str> {
        format!("GenericType_{}", T::schema_name()).into()
    }

    fn schema_id() -> Cow<'static, str> {
        format!(
            "{}::GenericType<{}>",
            module_path!(),
            T::schema_id()
        ).into()
    }

    fn json_schema(_gen: &mut SchemaGenerator) -> Schema {
        json_schema!({
            "foo": "bar"
        })
    }
}

assert_eq!(<GenericType<i32>>::schema_id(), <&mut GenericType<&i32>>::schema_id());

Required Methods§

fn schema_name() -> Cow<'static, str>

The name of the generated JSON Schema.

This is used as the title for root schemas, and the key within the root’s definitions property for subschemas.

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type.

If the returned schema depends on any non-inlined schemas, then this method will add them to the [SchemaGenerator]’s schema definitions.

This should not return a $ref schema.

Provided Methods§

fn inline_schema() -> bool

Whether JSON Schemas generated for this type should be included directly in parent schemas, rather than being re-used where possible using the $ref keyword.

For trivial types (such as primitives), this should return true. For more complex types, it should return false. For recursive types, this must return false to prevent infinite cycles when generating schemas.

By default, this returns false.

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type.

This does not have to be a human-readable string, and the value will not itself be included in generated schemas. If two types produce different schemas, then they must have different schema_id()s, but two types that produce identical schemas should ideally have the same schema_id().

The default implementation returns the same value as schema_name().

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

§

impl JsonSchema for ()

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Atomic<bool>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Atomic<i8>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Atomic<i16>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Atomic<i32>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Atomic<i64>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Atomic<isize>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Atomic<u8>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Atomic<u16>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Atomic<u32>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Atomic<u64>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Atomic<usize>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for CStr

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for CString

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Duration

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for IpAddr

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Ipv4Addr

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Ipv6Addr

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Map<String, Value>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<i8>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<i16>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<i32>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<i64>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<i128>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<isize>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<u8>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<u16>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<u32>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<u64>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<u128>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for NonZero<usize>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Number

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for OsStr

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for OsString

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Path

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for PathBuf

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for SocketAddr

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for SocketAddrV4

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for SocketAddrV6

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for String

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for SystemTime

Available on crate feature std only.
§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for Value

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for bool

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for char

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for f32

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for f64

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for i8

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for i16

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for i32

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for i64

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for i128

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for isize

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for str

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for u8

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for u16

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for u32

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for u64

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for u128

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl JsonSchema for usize

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl<'a, T> JsonSchema for &'a T
where T: JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<'a, T> JsonSchema for &'a mut T
where T: JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<'a, T> JsonSchema for Cow<'a, T>
where T: ToOwned + JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<'a> JsonSchema for Arguments<'a>

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<K, V, H> JsonSchema for HashMap<K, V, H>
where K: JsonSchema, V: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<K, V> JsonSchema for BTreeMap<K, V>
where K: JsonSchema, V: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
where T0: JsonSchema, T1: JsonSchema, T2: JsonSchema, T3: JsonSchema, T4: JsonSchema, T5: JsonSchema, T6: JsonSchema, T7: JsonSchema, T8: JsonSchema, T9: JsonSchema, T10: JsonSchema, T11: JsonSchema, T12: JsonSchema, T13: JsonSchema, T14: JsonSchema, T15: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)
where T0: JsonSchema, T1: JsonSchema, T2: JsonSchema, T3: JsonSchema, T4: JsonSchema, T5: JsonSchema, T6: JsonSchema, T7: JsonSchema, T8: JsonSchema, T9: JsonSchema, T10: JsonSchema, T11: JsonSchema, T12: JsonSchema, T13: JsonSchema, T14: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4, T5, T6, T7> JsonSchema for (T0, T1, T2, T3, T4, T5, T6, T7)

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4, T5, T6> JsonSchema for (T0, T1, T2, T3, T4, T5, T6)
where T0: JsonSchema, T1: JsonSchema, T2: JsonSchema, T3: JsonSchema, T4: JsonSchema, T5: JsonSchema, T6: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4, T5> JsonSchema for (T0, T1, T2, T3, T4, T5)
where T0: JsonSchema, T1: JsonSchema, T2: JsonSchema, T3: JsonSchema, T4: JsonSchema, T5: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3, T4> JsonSchema for (T0, T1, T2, T3, T4)
where T0: JsonSchema, T1: JsonSchema, T2: JsonSchema, T3: JsonSchema, T4: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2, T3> JsonSchema for (T0, T1, T2, T3)
where T0: JsonSchema, T1: JsonSchema, T2: JsonSchema, T3: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1, T2> JsonSchema for (T0, T1, T2)
where T0: JsonSchema, T1: JsonSchema, T2: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0, T1> JsonSchema for (T0, T1)
where T0: JsonSchema, T1: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T0> JsonSchema for (T0,)
where T0: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T, E> JsonSchema for Result<T, E>
where T: JsonSchema, E: JsonSchema,

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T, H> JsonSchema for HashSet<T, H>
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Arc<T>
where T: JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for BTreeSet<T>
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for BinaryHeap<T>
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Bound<T>
where T: JsonSchema,

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Box<T>
where T: JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Cell<T>
where T: JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for LinkedList<T>
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Mutex<T>
where T: JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Option<T>
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for PhantomData<T>
where T: ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Range<T>
where T: JsonSchema,

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for RangeInclusive<T>
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Rc<T>
where T: JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for RefCell<T>
where T: JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Reverse<T>
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for RwLock<T>
where T: JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Vec<T>
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for VecDeque<T>
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Weak<T>
where T: JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Weak<T>
where T: JsonSchema + ?Sized,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for Wrapping<T>
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 0]

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(_: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 1]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 2]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 3]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 4]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 5]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 6]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 7]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 8]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 9]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 10]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 11]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 12]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 13]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 14]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 15]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 16]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 17]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 18]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 19]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 20]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 21]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 22]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 23]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 24]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 25]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 26]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 27]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 28]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 29]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 30]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 31]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T; 32]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

§

impl<T> JsonSchema for [T]
where T: JsonSchema,

§

fn inline_schema() -> bool

§

fn schema_name() -> Cow<'static, str>

§

fn schema_id() -> Cow<'static, str>

§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Implementors§

§

impl JsonSchema for Schema

Source§

impl JsonSchema for noyalib::Value

JsonSchema for crate::Value — the dynamic value tree admits any JSON-expressible shape, so the schema we emit is the JSON Schema 2020-12 idiom for “any value”: {"oneOf": [...]} enumerating null, boolean, number, string, array, and object. Object values use a recursive additionalProperties reference so deeply-nested Value payloads typecheck without a depth bound.

This impl lets users derive JsonSchema on a struct that has a noyalib::Value field — e.g. when the field’s type is “any user-supplied YAML scalar / mapping / sequence” and the caller still wants a published schema for the surrounding shape.

§Examples

use noyalib::{schema_for, JsonSchema, Value};

#[derive(serde::Serialize, serde::Deserialize, JsonSchema)]
struct Envelope {
    id: String,
    payload: Value,
}

let schema = schema_for::<Envelope>().unwrap();
// The `payload` field is described by the `Value` schema —
// a oneOf union covering every JSON-expressible shape.
assert_eq!(schema["type"].as_str(), Some("object"));
assert!(matches!(schema["properties"]["payload"], Value::Mapping(_)));