From 26b9bdb362a543d706ebbb5436ccb5d594efde36 Mon Sep 17 00:00:00 2001 From: Sven Niederberger <73159570+s-nie@users.noreply.github.com> Date: Wed, 21 Aug 2024 13:06:49 +0200 Subject: [PATCH] `serde_userdata`: Remove `map_err` to reduce compile time impact (#441) --- CHANGELOG.md | 1 + src/serde/de.rs | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c607b1..0c27db2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - `Lua::replace_registry_value` takes `&mut RegistryKey` - `Lua::scope` temporary disabled (will be re-added in the next release) - Reduced the compile time contribution of `next_key_seed` and `next_value_seed`. +- Reduced the compile time contribution of `serde_userdata`. ## v0.9.9 diff --git a/src/serde/de.rs b/src/serde/de.rs index 24b651f..0d72d83 100644 --- a/src/serde/de.rs +++ b/src/serde/de.rs @@ -719,6 +719,11 @@ fn serde_userdata( ud: AnyUserData, f: impl FnOnce(serde_value::Value) -> std::result::Result, ) -> Result { - let value = serde_value::to_value(ud).map_err(|err| Error::SerializeError(err.to_string()))?; - f(value).map_err(|err| Error::DeserializeError(err.to_string())) + match serde_value::to_value(ud) { + Ok(value) => match f(value) { + Ok(r) => Ok(r), + Err(error) => Err(Error::DeserializeError(error.to_string())), + }, + Err(error) => Err(Error::SerializeError(error.to_string())), + } }