diff --git a/src/userdata.rs b/src/userdata.rs index f405074..b6ad825 100644 --- a/src/userdata.rs +++ b/src/userdata.rs @@ -1152,6 +1152,14 @@ impl OwnedAnyUserData { // Reattach lifetime to &self Ok(unsafe { mem::transmute::, RefMut>(t) }) } + + /// Takes the value out of this userdata. + /// + /// This is a shortcut for [`AnyUserData::take()`] + #[inline] + pub fn take(&self) -> Result { + self.to_ref().take() + } } /// Handle to a `UserData` metatable. diff --git a/tests/userdata.rs b/tests/userdata.rs index 36f05b5..6565a8e 100644 --- a/tests/userdata.rs +++ b/tests/userdata.rs @@ -831,11 +831,11 @@ fn test_owned_userdata() -> Result<()> { assert_eq!(*ud.borrow::<&str>()?, "abc"); *ud.borrow_mut()? = "cba"; - assert_eq!(*ud.to_ref().borrow::<&str>()?, "cba"); assert!(matches!( ud.borrow::(), Err(Error::UserDataTypeMismatch) )); + assert_eq!(ud.take::<&str>()?, "cba"); Ok(()) }