From 5a677fbbeb43d398726a7f6300d68972b4d1831e Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Thu, 20 Nov 2025 21:49:16 +0800 Subject: [PATCH] refactor: update function signatures to use references for Mapping and String --- src-tauri/src/enhance/field.rs | 4 ++-- src-tauri/src/enhance/merge.rs | 4 ++-- src-tauri/src/enhance/mod.rs | 18 +++++++++--------- src-tauri/src/enhance/script.rs | 12 ++++++------ 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src-tauri/src/enhance/field.rs b/src-tauri/src/enhance/field.rs index b75f682fe..72f9e916b 100644 --- a/src-tauri/src/enhance/field.rs +++ b/src-tauri/src/enhance/field.rs @@ -25,14 +25,14 @@ pub const DEFAULT_FIELDS: [&str; 5] = [ "rules", ]; -pub fn use_lowercase(config: Mapping) -> Mapping { +pub fn use_lowercase(config: &Mapping) -> Mapping { let mut ret = Mapping::new(); for (key, value) in config.into_iter() { if let Some(key_str) = key.as_str() { let mut key_str = String::from(key_str); key_str.make_ascii_lowercase(); - ret.insert(Value::from(key_str.as_str()), value); + ret.insert(Value::from(key_str.as_str()), value.clone()); } } ret diff --git a/src-tauri/src/enhance/merge.rs b/src-tauri/src/enhance/merge.rs index fb65d7f67..7579b585d 100644 --- a/src-tauri/src/enhance/merge.rs +++ b/src-tauri/src/enhance/merge.rs @@ -14,7 +14,7 @@ fn deep_merge(a: &mut Value, b: &Value) { } } -pub fn use_merge(merge: Mapping, config: Mapping) -> Mapping { +pub fn use_merge(merge: &Mapping, config: Mapping) -> Mapping { let mut config = Value::from(config); let merge = use_lowercase(merge); @@ -61,7 +61,7 @@ fn test_merge() -> anyhow::Result<()> { let merge = serde_yaml_ng::from_str::(merge)?; let config = serde_yaml_ng::from_str::(config)?; - let _ = serde_yaml_ng::to_string(&use_merge(merge, config))?; + let _ = serde_yaml_ng::to_string(&use_merge(&merge, config))?; Ok(()) } diff --git a/src-tauri/src/enhance/mod.rs b/src-tauri/src/enhance/mod.rs index eafde1db5..aca8c0a02 100644 --- a/src-tauri/src/enhance/mod.rs +++ b/src-tauri/src/enhance/mod.rs @@ -325,19 +325,19 @@ fn process_global_items( mut config: Mapping, global_merge: ChainItem, global_script: ChainItem, - profile_name: String, + profile_name: &String, ) -> (Mapping, Vec, HashMap) { let mut result_map = HashMap::new(); let mut exists_keys = use_keys(&config); if let ChainType::Merge(merge) = global_merge.data { exists_keys.extend(use_keys(&merge)); - config = use_merge(merge, config.to_owned()); + config = use_merge(&merge, config.to_owned()); } if let ChainType::Script(script) = global_script.data { let mut logs = vec![]; - match use_script(script, config.to_owned(), profile_name) { + match use_script(script, &config, profile_name) { Ok((res_config, res_logs)) => { exists_keys.extend(use_keys(&res_config)); config = res_config; @@ -361,7 +361,7 @@ fn process_profile_items( groups_item: ChainItem, merge_item: ChainItem, script_item: ChainItem, - profile_name: String, + profile_name: &String, ) -> (Mapping, Vec, HashMap) { if let ChainType::Rules(rules) = rules_item.data { config = use_seq(rules, config.to_owned(), "rules"); @@ -377,12 +377,12 @@ fn process_profile_items( if let ChainType::Merge(merge) = merge_item.data { exists_keys.extend(use_keys(&merge)); - config = use_merge(merge, config.to_owned()); + config = use_merge(&merge, config.to_owned()); } if let ChainType::Script(script) = script_item.data { let mut logs = vec![]; - match use_script(script, config.to_owned(), profile_name) { + match use_script(script, &config, profile_name) { Ok((res_config, res_logs)) => { exists_keys.extend(use_keys(&res_config)); config = res_config; @@ -486,7 +486,7 @@ fn apply_builtin_scripts( .for_each(|item| { logging!(debug, Type::Core, "run builtin script {}", item.uid); if let ChainType::Script(script) = item.data { - match use_script(script, config.to_owned(), "".into()) { + match use_script(script, &config, &String::from("")) { Ok((res_config, _)) => { config = res_config; } @@ -646,7 +646,7 @@ pub async fn enhance() -> (Mapping, Vec, HashMap) { // process globals let (config, exists_keys, result_map) = - process_global_items(config, global_merge, global_script, profile_name.clone()); + process_global_items(config, global_merge, global_script, &profile_name); // process profile-specific items let (config, exists_keys, result_map) = process_profile_items( @@ -658,7 +658,7 @@ pub async fn enhance() -> (Mapping, Vec, HashMap) { groups_item, merge_item, script_item, - profile_name, + &profile_name, ); // merge default clash config diff --git a/src-tauri/src/enhance/script.rs b/src-tauri/src/enhance/script.rs index 799c19dc3..ef03f00b7 100644 --- a/src-tauri/src/enhance/script.rs +++ b/src-tauri/src/enhance/script.rs @@ -5,8 +5,8 @@ use smartstring::alias::String; pub fn use_script( script: String, - config: Mapping, - name: String, + config: &Mapping, + name: &String, ) -> Result<(Mapping, Vec<(String, String)>)> { use boa_engine::{Context, JsString, JsValue, Source, native_function::NativeFunction}; use std::{cell::RefCell, rc::Rc}; @@ -66,7 +66,7 @@ pub fn use_script( let config_str = serde_json::to_string(&config)?; // 仅处理 name 参数中的特殊字符 - let safe_name = escape_js_string_for_single_quote(&name); + let safe_name = escape_js_string_for_single_quote(name); let code = format!( r"try{{ @@ -93,7 +93,7 @@ pub fn use_script( let mut out = outputs.borrow_mut(); match res { - Ok(config) => Ok((use_lowercase(config), out.to_vec())), + Ok(config) => Ok((use_lowercase(&config), out.to_vec())), Err(err) => { out.push(("exception".into(), err.to_string().into())); Ok((config, out.to_vec())) @@ -150,8 +150,8 @@ fn test_script() { enable: false "; - let config = serde_yaml_ng::from_str(config).expect("Failed to parse test config YAML"); - let (config, results) = use_script(script.into(), config, "".into()) + let config = &serde_yaml_ng::from_str(config).expect("Failed to parse test config YAML"); + let (config, results) = use_script(script.into(), config, &String::from("")) .expect("Script execution should succeed in test"); let _ = serde_yaml_ng::to_string(&config).expect("Failed to serialize config to YAML");