summaryrefslogtreecommitdiff
path: root/src/lua/ownedfunction.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua/ownedfunction.rs')
-rw-r--r--src/lua/ownedfunction.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/lua/ownedfunction.rs b/src/lua/ownedfunction.rs
index a8d81cf..54e39df 100644
--- a/src/lua/ownedfunction.rs
+++ b/src/lua/ownedfunction.rs
@@ -1,4 +1,4 @@
-use mlua::{Function, Lua, RegistryKey, Value};
+use mlua::{Error, FromLua, Function, Lua, RegistryKey, Value};
#[derive(Debug)]
pub struct OwnedFunction {
@@ -15,3 +15,13 @@ impl OwnedFunction {
lua.registry_value(&self.key).unwrap()
}
}
+
+impl<'lua> FromLua<'lua> for OwnedFunction {
+ fn from_lua(value: Value<'lua>, lua: &'lua Lua) -> mlua::prelude::LuaResult<Self> {
+ if value.is_function() {
+ Ok(OwnedFunction::new(value, lua))
+ } else {
+ Err(Error::runtime("value needs to be function"))
+ }
+ }
+}