Forgotten optimization for `box_method_mut`
This commit is contained in:
parent
3bffe1d7c3
commit
934aa3b65f
13
src/lua.rs
13
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::<T>() => {
|
||||
let mut ud = userdata.borrow_mut::<T>()?;
|
||||
method(lua, &mut ud, A::from_lua_multi(args, lua)?)?.to_lua_multi(lua)
|
||||
// Try normal userdata first
|
||||
let err = match userdata.borrow_mut::<T>() {
|
||||
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::<T>() => Err(err),
|
||||
#[cfg(not(feature = "send"))]
|
||||
id if id == TypeId::of::<Rc<RefCell<T>>>() => {
|
||||
let ud = userdata.borrow::<Rc<RefCell<T>>>()?;
|
||||
|
|
Loading…
Reference in New Issue