From acabc3ec18df8a91f7a7355e6c5ade770e3c3518 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Sat, 29 Jul 2017 15:53:37 +0200 Subject: [PATCH] Relax requirements for UserData to impl FromLua This was only allowed for `UserData` implementors that are also `Copy`. This relaxes the requirement to be `Clone` instead. While `Copy` makes sense to prevent allocations and other potentially costly operations, other `FromLua` impls already do pretty expensive stuff, so this seems worth it. --- src/conversion.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/conversion.rs b/src/conversion.rs index 6fac7e6..bd5cb76 100644 --- a/src/conversion.rs +++ b/src/conversion.rs @@ -103,10 +103,10 @@ impl<'lua, T: UserData> ToLua<'lua> for T { } } -impl<'lua, T: UserData + Copy> FromLua<'lua> for T { +impl<'lua, T: UserData + Clone> FromLua<'lua> for T { fn from_lua(value: Value<'lua>, _: &'lua Lua) -> Result { match value { - Value::UserData(ud) => Ok(*ud.borrow::()?), + Value::UserData(ud) => Ok(ud.borrow::()?.clone()), _ => Err(Error::FromLuaConversionError( "cannot convert lua value to userdata".to_owned(), )),