From d10552031890ec09937d1b7a0dea1e68b0daf79a Mon Sep 17 00:00:00 2001 From: HampusM Date: Sun, 5 Jul 2026 00:40:35 +0200 Subject: feat(engine): add try_write_new_to fn to enum variant reflection --- engine-reflection/Cargo.toml | 2 ++ engine-reflection/src/lib.rs | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) (limited to 'engine-reflection') diff --git a/engine-reflection/Cargo.toml b/engine-reflection/Cargo.toml index 8e13728..2f90841 100644 --- a/engine-reflection/Cargo.toml +++ b/engine-reflection/Cargo.toml @@ -4,3 +4,5 @@ version = "0.1.0" edition = "2021" [dependencies] +thiserror = "1.0.49" + diff --git a/engine-reflection/src/lib.rs b/engine-reflection/src/lib.rs index 9f347fa..3451442 100644 --- a/engine-reflection/src/lib.rs +++ b/engine-reflection/src/lib.rs @@ -177,6 +177,27 @@ pub struct EnumVariant pub fields: Option, pub discriminant: EnumDiscriminant, + + pub try_write_new_to: fn( + dst: &mut dyn Any, + fields: &mut dyn Iterator>, + ) -> Result<(), EnumVariantWriteNewToError>, +} + +#[derive(Debug, thiserror::Error)] +pub enum EnumVariantWriteNewToError +{ + #[error("Destination must be the same type as the variant's enum")] + WrongDstType, + + #[error("Too few fields are specified")] + TooFewFields, + + #[error("Too many fields are specified")] + TooManyFields, + + #[error("A field has the wrong type")] + WrongFieldType, } #[derive(Debug, Clone)] -- cgit v1.2.3-18-g5258