From abe74e7f44e8722f7578dec2efcf73190220a095 Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Mon, 3 Aug 2020 23:11:24 +0800 Subject: [PATCH] Handle Dynamic::from(FnPtr). --- src/any.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/any.rs b/src/any.rs index 78d681be..f9c8a093 100644 --- a/src/any.rs +++ b/src/any.rs @@ -551,6 +551,11 @@ impl Dynamic { } } + boxed = match unsafe_cast_box::<_, FnPtr>(boxed) { + Ok(fn_ptr) => return (*fn_ptr).into(), + Err(val) => val, + }; + boxed = match unsafe_cast_box::<_, Dynamic>(boxed) { Ok(d) => return *d, Err(val) => val, @@ -805,6 +810,7 @@ impl Dynamic { let data = cell.read().unwrap(); let type_id = (*data).type_id(); + println!("Type = {}", (*data).type_name()); if type_id != TypeId::of::() && TypeId::of::() != TypeId::of::() { None @@ -1176,7 +1182,7 @@ impl, T: Variant + Clone> From> for Dynam } impl From for Dynamic { fn from(value: FnPtr) -> Self { - Box::new(value).into() + Self(Union::FnPtr(Box::new(value))) } } impl From> for Dynamic {