From 16f9c87bdd6825537e9a1e8e0ee58ac4321575a1 Mon Sep 17 00:00:00 2001 From: Piotr Siuszko Date: Sat, 21 Jun 2025 21:55:58 +0200 Subject: [PATCH] Add InvalidJsonSchema error and helper impl for TypeRegistration --- crates/bevy_remote/src/schemas/json_schema.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/crates/bevy_remote/src/schemas/json_schema.rs b/crates/bevy_remote/src/schemas/json_schema.rs index e6527d9585..f8b2ab5e80 100644 --- a/crates/bevy_remote/src/schemas/json_schema.rs +++ b/crates/bevy_remote/src/schemas/json_schema.rs @@ -66,8 +66,15 @@ impl TypeRegistrySchemaReader for TypeRegistry { } } +/// Error type for invalid JSON Schema conversions. +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum InvalidJsonSchema { + /// The type cannot be converted to a valid JSON Schema. + InvalidType, +} + impl TryFrom<(&TypeRegistration, &SchemaTypesMetadata)> for JsonSchemaBevyType { - type Error = (); + type Error = InvalidJsonSchema; fn try_from(value: (&TypeRegistration, &SchemaTypesMetadata)) -> Result { let (reg, metadata) = value; @@ -78,13 +85,21 @@ impl TryFrom<(&TypeRegistration, &SchemaTypesMetadata)> for JsonSchemaBevyType { let base_schema = type_info.build_schema(); let JsonSchemaVariant::Schema(mut typed_schema) = base_schema else { - return Err(()); + return Err(InvalidJsonSchema::InvalidType); }; typed_schema.reflect_types = metadata.get_registered_reflect_types(reg); Ok(*typed_schema) } } +impl TryFrom<&TypeRegistration> for JsonSchemaBevyType { + type Error = InvalidJsonSchema; + + fn try_from(value: &TypeRegistration) -> Result { + (value, &SchemaTypesMetadata::default()).try_into() + } +} + /// Identifies the JSON Schema version used in the schema. #[derive(Deserialize, Serialize, Debug, Reflect, PartialEq, Clone)] pub struct SchemaMarker(String);