1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
use crate::gen::SchemaGenerator; use crate::schema::*; use crate::JsonSchema; use either::Either; impl<L: JsonSchema, R: JsonSchema> JsonSchema for Either<L, R> { no_ref_schema!(); fn schema_name() -> String { format!("Either_{}_or_{}", L::schema_name(), R::schema_name()) } fn json_schema(gen: &mut SchemaGenerator) -> Schema { let mut schema = SchemaObject::default(); schema.subschemas().any_of = Some(vec![gen.subschema_for::<L>(), gen.subschema_for::<R>()]); schema.into() } }