From ec3074106e1fd39b39ba5c7e711ef52cbb4d30b0 Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Tue, 21 Jul 2020 20:58:53 +0800 Subject: [PATCH] Display type name when printing Dynamic values that have no built-in format. --- src/any.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/any.rs b/src/any.rs index 5182da08..8ff20298 100644 --- a/src/any.rs +++ b/src/any.rs @@ -243,12 +243,15 @@ impl fmt::Display for Dynamic { #[cfg(not(feature = "no_index"))] Union::Array(value) => fmt::Debug::fmt(value, f), #[cfg(not(feature = "no_object"))] - Union::Map(value) => write!(f, "#{:?}", value), + Union::Map(value) => { + f.write_str("#")?; + fmt::Debug::fmt(value, f) + } Union::FnPtr(value) => fmt::Display::fmt(value, f), #[cfg(not(feature = "no_std"))] Union::Variant(value) if value.is::() => write!(f, ""), - Union::Variant(_) => write!(f, "?"), + Union::Variant(value) => write!(f, "{}", (*value).type_name()), } } } @@ -266,12 +269,15 @@ impl fmt::Debug for Dynamic { #[cfg(not(feature = "no_index"))] Union::Array(value) => fmt::Debug::fmt(value, f), #[cfg(not(feature = "no_object"))] - Union::Map(value) => write!(f, "#{:?}", value), + Union::Map(value) => { + f.write_str("#")?; + fmt::Debug::fmt(value, f) + } Union::FnPtr(value) => fmt::Display::fmt(value, f), #[cfg(not(feature = "no_std"))] Union::Variant(value) if value.is::() => write!(f, ""), - Union::Variant(_) => write!(f, ""), + Union::Variant(value) => write!(f, "{}", (*value).type_name()), } } }