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.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/lua/ownedfunction.rs b/src/lua/ownedfunction.rs
new file mode 100644
index 0000000..a8d81cf
--- /dev/null
+++ b/src/lua/ownedfunction.rs
@@ -0,0 +1,17 @@
+use mlua::{Function, Lua, RegistryKey, Value};
+
+#[derive(Debug)]
+pub struct OwnedFunction {
+ key: RegistryKey,
+}
+
+impl OwnedFunction {
+ pub fn new<'lua>(value: Value<'lua>, lua: &'lua Lua) -> Self {
+ let key = lua.create_registry_value(value).unwrap();
+ Self { key }
+ }
+
+ pub fn get<'lua>(&self, lua: &'lua Lua) -> Function<'lua> {
+ lua.registry_value(&self.key).unwrap()
+ }
+}