architect_schemars/json_schema_impls/
either.rs1use crate::r#gen::SchemaGenerator;
2use crate::schema::*;
3use crate::JsonSchema;
4use either::Either;
5use std::borrow::Cow;
6
7impl<L: JsonSchema, R: JsonSchema> JsonSchema for Either<L, R> {
8 no_ref_schema!();
9
10 fn schema_name() -> String {
11 format!("Either_{}_or_{}", L::schema_name(), R::schema_name())
12 }
13
14 fn schema_id() -> Cow<'static, str> {
15 Cow::Owned(format!(
16 "either::Either<{}, {}>",
17 L::schema_id(),
18 R::schema_id()
19 ))
20 }
21
22 fn json_schema(generator: &mut SchemaGenerator) -> Schema {
23 let mut schema = SchemaObject::default();
24 schema.subschemas().any_of = Some(vec![
25 generator.subschema_for::<L>(),
26 generator.subschema_for::<R>(),
27 ]);
28 schema.into()
29 }
30}