From c9cc58a0736c78fb4ead7895173fe443f8f073fe Mon Sep 17 00:00:00 2001 From: HampusM Date: Fri, 17 Jul 2026 00:34:46 +0200 Subject: feat(engine-reflection): add try_deref fn to reference reflection --- engine-reflection/src/lib.rs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'engine-reflection/src/lib.rs') diff --git a/engine-reflection/src/lib.rs b/engine-reflection/src/lib.rs index 76dc71d..dedfee7 100644 --- a/engine-reflection/src/lib.rs +++ b/engine-reflection/src/lib.rs @@ -356,6 +356,7 @@ pub struct Reference { pub ty: &'static Type, pub cast_dyn_any: CastDynAnyFn, + pub try_deref: fn(target: &dyn Any) -> Option<&dyn Any>, } #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -491,6 +492,11 @@ unsafe impl Reflection for &'static T const TYPE_REFLECTION: &Type = &Type::Reference(Reference { ty: T::TYPE_REFLECTION, cast_dyn_any: |ptr| ptr.cast::(), + try_deref: |target| { + let target = target.downcast_ref::()?; + + Some(*target) + }, }); } -- cgit v1.2.3-18-g5258