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::>>()?;