From 934aa3b65f5ed3a6a9ca31c3895b6362b6da9936 Mon Sep 17 00:00:00 2001 From: Alex Orlenko Date: Fri, 9 Jul 2021 23:25:48 +0100 Subject: [PATCH] Forgotten optimization for `box_method_mut` --- src/lua.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/lua.rs b/src/lua.rs index 95a3191..c2c3cfc 100644 --- a/src/lua.rs +++ b/src/lua.rs @@ -2816,11 +2816,16 @@ impl<'lua, T: 'static + UserData> StaticUserDataMethods<'lua, T> { let mut method = method .try_borrow_mut() .map_err(|_| Error::RecursiveMutCallback)?; - match userdata.type_id()? { - id if id == TypeId::of::() => { - let mut ud = userdata.borrow_mut::()?; - method(lua, &mut ud, A::from_lua_multi(args, lua)?)?.to_lua_multi(lua) + // Try normal userdata first + let err = match userdata.borrow_mut::() { + Ok(mut ud) => { + return method(lua, &mut ud, A::from_lua_multi(args, lua)?)? + .to_lua_multi(lua) } + Err(err) => err, + }; + match userdata.type_id()? { + id if id == TypeId::of::() => Err(err), #[cfg(not(feature = "send"))] id if id == TypeId::of::>>() => { let ud = userdata.borrow::>>()?;