From d14168a4192ee1e814d7e61cb295debd1e20ae8f Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Wed, 27 Jan 2021 18:34:32 +0800 Subject: [PATCH] Refine Dynamic::take_immutable_string when shared. --- src/dynamic.rs | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/src/dynamic.rs b/src/dynamic.rs index 07346620..c89c1250 100644 --- a/src/dynamic.rs +++ b/src/dynamic.rs @@ -1337,22 +1337,14 @@ impl Dynamic { #[cfg(not(feature = "no_closure"))] Union::Shared(cell, _) => { #[cfg(not(feature = "sync"))] - { - let inner = cell.borrow(); - match &inner.0 { - Union::Str(s, _) => Ok(s.clone()), - Union::FnPtr(f, _) => Ok(f.clone().take_data().0), - _ => Err((*inner).type_name()), - } - } + let data = cell.borrow(); #[cfg(feature = "sync")] - { - let inner = cell.read().unwrap(); - match &inner.0 { - Union::Str(s, _) => Ok(s.clone()), - Union::FnPtr(f, _) => Ok(f.clone().take_data().0), - _ => Err((*inner).type_name()), - } + let data = cell.read().unwrap(); + + match &data.0 { + Union::Str(s, _) => Ok(s.clone()), + Union::FnPtr(f, _) => Ok(f.get_fn_name().clone()), + _ => Err((*data).type_name()), } } _ => Err(self.type_name()),