From 33ef1720e39dfc4043025935827e5dbdd3516d74 Mon Sep 17 00:00:00 2001 From: Byson94 Date: Thu, 1 Jan 2026 12:55:40 +0530 Subject: [PATCH] feat: return data early if mutations is empty --- crates/rhai_impl/src/updates/localsignal.rs | 25 ++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/crates/rhai_impl/src/updates/localsignal.rs b/crates/rhai_impl/src/updates/localsignal.rs index 41cfa3f..6e4c612 100644 --- a/crates/rhai_impl/src/updates/localsignal.rs +++ b/crates/rhai_impl/src/updates/localsignal.rs @@ -181,16 +181,6 @@ pub fn handle_localsignal_changes( let original = value.to_string(); let mut current = original.clone(); - let parser_rc = parser.borrow_mut(); - let compiled_ast = match ast.as_ref() { - Some(rc) => rc.borrow(), - None => { - log::warn!("No compiled AST available"); - signal.data.set_value(¤t); - return; - } - }; - let mutations: Vec = match signal.props.get("mutations") { Some(v) => { if let Ok(arr) = v.as_array_ref() { @@ -210,6 +200,21 @@ pub fn handle_localsignal_changes( None => Vec::new(), }; + if mutations.is_empty() { + signal.data.set_value(¤t); + return; + } + + let parser_rc = parser.borrow_mut(); + let compiled_ast = match ast.as_ref() { + Some(rc) => rc.borrow(), + None => { + log::warn!("No compiled AST available"); + signal.data.set_value(¤t); + return; + } + }; + for mutation in mutations { match mutation.call::(&parser_rc.engine, &compiled_ast, (current.clone(),)) { Ok(v) => {