From e880efe4cfc91509e7ce9a4ea747cdd52af93989 Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Mon, 8 Sep 2025 02:09:11 +0200 Subject: [PATCH] refactor: Store callback function directly instead of in the registry --- automation_lib/src/action_callback.rs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/automation_lib/src/action_callback.rs b/automation_lib/src/action_callback.rs index a7ac26d..1dc08e9 100644 --- a/automation_lib/src/action_callback.rs +++ b/automation_lib/src/action_callback.rs @@ -5,7 +5,7 @@ use serde::Serialize; #[derive(Debug, Clone)] struct Internal { - uuid: uuid::Uuid, + value: mlua::Value, lua: mlua::Lua, } @@ -28,12 +28,9 @@ impl Default for ActionCallback { impl FromLua for ActionCallback { fn from_lua(value: mlua::Value, lua: &mlua::Lua) -> mlua::Result { - let uuid = uuid::Uuid::new_v4(); - lua.set_named_registry_value(&uuid.to_string(), value)?; - Ok(ActionCallback { internal: Some(Internal { - uuid, + value, lua: lua.clone(), }), _this: PhantomData::, @@ -55,11 +52,7 @@ where let state = internal.lua.to_value(state).unwrap(); - let callback: mlua::Value = internal - .lua - .named_registry_value(&internal.uuid.to_string()) - .unwrap(); - match callback { + match &internal.value { mlua::Value::Function(f) => f.call_async::<()>((this.clone(), state)).await.unwrap(), _ => todo!("Only functions are currently supported"), }