schemars/schemars/src/json_schema_impls/either1.rs

23 lines
677 B
Rust

use crate::_alloc_prelude::*;
use crate::gen::SchemaGenerator;
use crate::{json_schema, JsonSchema, Schema};
use alloc::borrow::Cow;
use either1::Either;
impl<L: JsonSchema, R: JsonSchema> JsonSchema for Either<L, R> {
always_inline!();
fn schema_name() -> Cow<'static, str> {
format!("Either_{}_or_{}", L::schema_name(), R::schema_name()).into()
}
fn schema_id() -> Cow<'static, str> {
format!("either::Either<{}, {}>", L::schema_id(), R::schema_id()).into()
}
fn json_schema(gen: &mut SchemaGenerator) -> Schema {
json_schema!({
"anyOf": [gen.subschema_for::<L>(), gen.subschema_for::<R>()],
})
}
}