From a574ced4288c967d55cdeb65c956ab500e9936f7 Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Fri, 27 Jun 2025 23:30:35 +0800 Subject: [PATCH] Refactor logging statements to use the new formatting syntax for improved readability and consistency across the codebase. This includes updating error, warning, and info logs in various modules such as system commands, configuration, core functionalities, and utilities. Additionally, minor adjustments were made to string formatting in backup and proxy features to enhance clarity. --- src-tauri/src/cmd/app.rs | 8 ++-- src-tauri/src/cmd/clash.rs | 20 ++++----- src-tauri/src/cmd/media_unlock_checker.rs | 50 +++++++++++------------ src-tauri/src/cmd/network.rs | 2 +- src-tauri/src/cmd/profile.rs | 16 ++++---- src-tauri/src/cmd/system.rs | 4 +- src-tauri/src/config/encrypt.rs | 4 +- src-tauri/src/config/profiles.rs | 18 ++++---- src-tauri/src/core/async_proxy_query.rs | 10 ++--- src-tauri/src/core/backup.rs | 9 ++-- src-tauri/src/core/core.rs | 20 ++++----- src-tauri/src/core/event_driven_proxy.rs | 8 ++-- src-tauri/src/core/handle.rs | 17 ++++---- src-tauri/src/core/service.rs | 22 +++++----- src-tauri/src/core/service_ipc.rs | 2 +- src-tauri/src/core/sysopt.rs | 10 ++--- src-tauri/src/core/tray/mod.rs | 12 +++--- src-tauri/src/feat/backup.rs | 12 +++--- src-tauri/src/feat/clash.rs | 6 +-- src-tauri/src/feat/profile.rs | 14 +++---- src-tauri/src/feat/proxy.rs | 6 +-- src-tauri/src/feat/window.rs | 10 ++--- src-tauri/src/module/lightweight.rs | 6 +-- src-tauri/src/module/mihomo.rs | 2 +- src-tauri/src/utils/dirs.rs | 8 ++-- src-tauri/src/utils/i18n.rs | 2 +- src-tauri/src/utils/init.rs | 2 +- src-tauri/src/utils/network.rs | 4 +- src-tauri/src/utils/resolve.rs | 6 +-- src-tauri/src/utils/server.rs | 2 +- src-tauri/src/utils/window_manager.rs | 3 +- 31 files changed, 153 insertions(+), 162 deletions(-) diff --git a/src-tauri/src/cmd/app.rs b/src-tauri/src/cmd/app.rs index f44928ce..f862dbe7 100644 --- a/src-tauri/src/cmd/app.rs +++ b/src-tauri/src/cmd/app.rs @@ -147,7 +147,7 @@ pub async fn download_icon_cache(url: String, name: String) -> CmdResult Ok(icon_path.to_string_lossy().to_string()) } else { let _ = std::fs::remove_file(&temp_path); - Err(format!("下载的内容不是有效图片: {}", url)) + Err(format!("下载的内容不是有效图片: {url}")) } } @@ -217,7 +217,7 @@ pub fn notify_ui_ready() -> CmdResult<()> { /// UI加载阶段 #[tauri::command] pub fn update_ui_stage(stage: String) -> CmdResult<()> { - log::info!(target: "app", "UI加载阶段更新: {}", stage); + log::info!(target: "app", "UI加载阶段更新: {stage}"); use crate::utils::resolve::UiReadyStage; @@ -228,8 +228,8 @@ pub fn update_ui_stage(stage: String) -> CmdResult<()> { "ResourcesLoaded" => UiReadyStage::ResourcesLoaded, "Ready" => UiReadyStage::Ready, _ => { - log::warn!(target: "app", "未知的UI加载阶段: {}", stage); - return Err(format!("未知的UI加载阶段: {}", stage)); + log::warn!(target: "app", "未知的UI加载阶段: {stage}"); + return Err(format!("未知的UI加载阶段: {stage}")); } }; diff --git a/src-tauri/src/cmd/clash.rs b/src-tauri/src/cmd/clash.rs index c0a5e00c..e6612caa 100644 --- a/src-tauri/src/cmd/clash.rs +++ b/src-tauri/src/cmd/clash.rs @@ -49,8 +49,8 @@ pub async fn change_clash_core(clash_core: String) -> CmdResult> Ok(None) } Err(err) => { - let error_msg = format!("Core changed but failed to restart: {}", err); - log::error!(target: "app", "{}", error_msg); + let error_msg = format!("Core changed but failed to restart: {err}"); + log::error!(target: "app", "{error_msg}"); handle::Handle::notice_message("config_core::change_error", &error_msg); Ok(Some(error_msg)) } @@ -116,7 +116,7 @@ pub async fn save_dns_config(dns_config: Mapping) -> CmdResult { // 保存DNS配置到文件 let yaml_str = serde_yaml::to_string(&dns_config).map_err(|e| e.to_string())?; fs::write(&dns_path, yaml_str).map_err(|e| e.to_string())?; - log::info!(target: "app", "DNS config saved to {:?}", dns_path); + log::info!(target: "app", "DNS config saved to {dns_path:?}"); Ok(()) } @@ -137,7 +137,7 @@ pub fn apply_dns_config(apply: bool) -> CmdResult { let dns_path = match dirs::app_home_dir() { Ok(path) => path.join("dns_config.yaml"), Err(e) => { - log::error!(target: "app", "Failed to get home dir: {}", e); + log::error!(target: "app", "Failed to get home dir: {e}"); return; } }; @@ -150,7 +150,7 @@ pub fn apply_dns_config(apply: bool) -> CmdResult { let dns_yaml = match std::fs::read_to_string(&dns_path) { Ok(content) => content, Err(e) => { - log::error!(target: "app", "Failed to read DNS config: {}", e); + log::error!(target: "app", "Failed to read DNS config: {e}"); return; } }; @@ -163,7 +163,7 @@ pub fn apply_dns_config(apply: bool) -> CmdResult { patch } Err(e) => { - log::error!(target: "app", "Failed to parse DNS config: {}", e); + log::error!(target: "app", "Failed to parse DNS config: {e}"); return; } }; @@ -178,13 +178,13 @@ pub fn apply_dns_config(apply: bool) -> CmdResult { // 首先重新生成配置 if let Err(err) = Config::generate().await { - log::error!(target: "app", "Failed to regenerate config with DNS: {}", err); + log::error!(target: "app", "Failed to regenerate config with DNS: {err}"); return; } // 然后应用新配置 if let Err(err) = CoreManager::global().update_config().await { - log::error!(target: "app", "Failed to apply config with DNS: {}", err); + log::error!(target: "app", "Failed to apply config with DNS: {err}"); } else { log::info!(target: "app", "DNS config successfully applied"); handle::Handle::refresh_clash(); @@ -196,7 +196,7 @@ pub fn apply_dns_config(apply: bool) -> CmdResult { // 重新生成配置 if let Err(err) = Config::generate().await { - log::error!(target: "app", "Failed to regenerate config: {}", err); + log::error!(target: "app", "Failed to regenerate config: {err}"); return; } @@ -207,7 +207,7 @@ pub fn apply_dns_config(apply: bool) -> CmdResult { handle::Handle::refresh_clash(); } Err(err) => { - log::error!(target: "app", "Failed to apply regenerated config: {}", err); + log::error!(target: "app", "Failed to apply regenerated config: {err}"); } } } diff --git a/src-tauri/src/cmd/media_unlock_checker.rs b/src-tauri/src/cmd/media_unlock_checker.rs index 78062cc5..1b4c056b 100644 --- a/src-tauri/src/cmd/media_unlock_checker.rs +++ b/src-tauri/src/cmd/media_unlock_checker.rs @@ -37,7 +37,7 @@ fn country_code_to_emoji(country_code: &str) -> String { let c2 = 0x1F1E6 + (bytes[1] as u32) - ('A' as u32); char::from_u32(c1) - .and_then(|c1| char::from_u32(c2).map(|c2| format!("{}{}", c1, c2))) + .and_then(|c1| char::from_u32(c2).map(|c2| format!("{c1}{c2}"))) .unwrap_or_default() } @@ -163,7 +163,7 @@ async fn check_chatgpt_combined(client: &Client) -> Vec { map.get("loc").map(|loc| { let emoji = country_code_to_emoji(loc); - format!("{}{}", emoji, loc) + format!("{emoji}{loc}") }) } else { None @@ -255,7 +255,7 @@ async fn check_gemini(client: &Client) -> UnlockItem { caps.get(1).map(|m| { let country_code = m.as_str(); let emoji = country_code_to_emoji(country_code); - format!("{}{}", emoji, country_code) + format!("{emoji}{country_code}") }) }); @@ -308,7 +308,7 @@ async fn check_youtube_premium(client: &Client) -> UnlockItem { caps.get(1).map(|m| { let country_code = m.as_str().trim(); let emoji = country_code_to_emoji(country_code); - format!("{}{}", emoji, country_code) + format!("{emoji}{country_code}") }) }); @@ -384,10 +384,8 @@ async fn check_bahamut_anime(client: &Client) -> UnlockItem { } // 第二步:使用设备ID检查访问权限 (使用相同的Cookie) - let url = format!( - "https://ani.gamer.com.tw/ajax/token.php?adID=89422&sn=37783&device={}", - device_id - ); + let url = + format!("https://ani.gamer.com.tw/ajax/token.php?adID=89422&sn=37783&device={device_id}"); let token_result = match client_with_cookies.get(&url).send().await { Ok(response) => { @@ -431,7 +429,7 @@ async fn check_bahamut_anime(client: &Client) -> UnlockItem { .map(|m| { let country_code = m.as_str(); let emoji = country_code_to_emoji(country_code); - format!("{}{}", emoji, country_code) + format!("{emoji}{country_code}") }) } Err(_) => None, @@ -470,7 +468,7 @@ async fn check_netflix(client: &Client) -> UnlockItem { // 检查连接失败情况 if let Err(e) = &result1 { - eprintln!("Netflix请求错误: {}", e); + eprintln!("Netflix请求错误: {e}"); return UnlockItem { name: "Netflix".to_string(), status: "Failed".to_string(), @@ -487,7 +485,7 @@ async fn check_netflix(client: &Client) -> UnlockItem { .await; if let Err(e) = &result2 { - eprintln!("Netflix请求错误: {}", e); + eprintln!("Netflix请求错误: {e}"); return UnlockItem { name: "Netflix".to_string(), status: "Failed".to_string(), @@ -541,7 +539,7 @@ async fn check_netflix(client: &Client) -> UnlockItem { return UnlockItem { name: "Netflix".to_string(), status: "Yes".to_string(), - region: Some(format!("{}{}", emoji, region_code)), + region: Some(format!("{emoji}{region_code}")), check_time: Some(get_local_date_string()), }; } @@ -557,7 +555,7 @@ async fn check_netflix(client: &Client) -> UnlockItem { } } Err(e) => { - eprintln!("获取Netflix区域信息失败: {}", e); + eprintln!("获取Netflix区域信息失败: {e}"); UnlockItem { name: "Netflix".to_string(), status: "Yes (但无法获取区域)".to_string(), @@ -570,7 +568,7 @@ async fn check_netflix(client: &Client) -> UnlockItem { // 其他未知错误状态 UnlockItem { name: "Netflix".to_string(), - status: format!("Failed (状态码: {}_{}", status1, status2), + status: format!("Failed (状态码: {status1}_{status2}"), region: None, check_time: Some(get_local_date_string()), } @@ -614,7 +612,7 @@ async fn check_netflix_cdn(client: &Client) -> UnlockItem { return UnlockItem { name: "Netflix".to_string(), status: "Yes".to_string(), - region: Some(format!("{}{}", emoji, country)), + region: Some(format!("{emoji}{country}")), check_time: Some(get_local_date_string()), }; } @@ -631,7 +629,7 @@ async fn check_netflix_cdn(client: &Client) -> UnlockItem { } } Err(e) => { - eprintln!("解析Fast.com API响应失败: {}", e); + eprintln!("解析Fast.com API响应失败: {e}"); UnlockItem { name: "Netflix".to_string(), status: "Failed (解析错误)".to_string(), @@ -642,7 +640,7 @@ async fn check_netflix_cdn(client: &Client) -> UnlockItem { } } Err(e) => { - eprintln!("Fast.com API请求失败: {}", e); + eprintln!("Fast.com API请求失败: {e}"); UnlockItem { name: "Netflix".to_string(), status: "Failed (CDN API)".to_string(), @@ -884,7 +882,7 @@ async fn check_disney_plus(client: &Client) -> UnlockItem { return UnlockItem { name: "Disney+".to_string(), status: "Yes".to_string(), - region: Some(format!("{}{} (from main page)", emoji, region)), + region: Some(format!("{emoji}{region} (from main page)")), check_time: Some(get_local_date_string()), }; } @@ -947,7 +945,7 @@ async fn check_disney_plus(client: &Client) -> UnlockItem { return UnlockItem { name: "Disney+".to_string(), status: "Yes".to_string(), - region: Some(format!("{}{} (from main page)", emoji, region)), + region: Some(format!("{emoji}{region} (from main page)")), check_time: Some(get_local_date_string()), }; } @@ -968,7 +966,7 @@ async fn check_disney_plus(client: &Client) -> UnlockItem { return UnlockItem { name: "Disney+".to_string(), status: "Yes".to_string(), - region: Some(format!("{}{}", emoji, region)), + region: Some(format!("{emoji}{region}")), check_time: Some(get_local_date_string()), }; } @@ -990,7 +988,7 @@ async fn check_disney_plus(client: &Client) -> UnlockItem { UnlockItem { name: "Disney+".to_string(), status: "Soon".to_string(), - region: Some(format!("{}{}(即将上线)", emoji, region)), + region: Some(format!("{emoji}{region}(即将上线)")), check_time: Some(get_local_date_string()), } } @@ -999,13 +997,13 @@ async fn check_disney_plus(client: &Client) -> UnlockItem { UnlockItem { name: "Disney+".to_string(), status: "Yes".to_string(), - region: Some(format!("{}{}", emoji, region)), + region: Some(format!("{emoji}{region}")), check_time: Some(get_local_date_string()), } } None => UnlockItem { name: "Disney+".to_string(), - status: format!("Failed (Error: Unknown region status for {})", region), + status: format!("Failed (Error: Unknown region status for {region})"), region: None, check_time: Some(get_local_date_string()), }, @@ -1056,7 +1054,7 @@ async fn check_prime_video(client: &Client) -> UnlockItem { return UnlockItem { name: "Prime Video".to_string(), status: "Yes".to_string(), - region: Some(format!("{}{}", emoji, region)), + region: Some(format!("{emoji}{region}")), check_time: Some(get_local_date_string()), }; } @@ -1170,7 +1168,7 @@ pub async fn check_media_unlock() -> Result, String> { .connection_verbose(true) // 详细连接信息 .build() { Ok(client) => client, - Err(e) => return Err(format!("创建HTTP客户端失败: {}", e)), + Err(e) => return Err(format!("创建HTTP客户端失败: {e}")), }; // 创建共享的结果集 @@ -1284,7 +1282,7 @@ pub async fn check_media_unlock() -> Result, String> { // 等待所有任务完成 while let Some(res) = tasks.join_next().await { if let Err(e) = res { - eprintln!("任务执行失败: {}", e); + eprintln!("任务执行失败: {e}"); } } diff --git a/src-tauri/src/cmd/network.rs b/src-tauri/src/cmd/network.rs index d3b438b7..52f88eff 100644 --- a/src-tauri/src/cmd/network.rs +++ b/src-tauri/src/cmd/network.rs @@ -54,7 +54,7 @@ pub fn get_system_hostname() -> CmdResult { Ok(name) => name, Err(os_string) => { // 对于包含非UTF-8的主机名,使用调试格式化 - let fallback = format!("{:?}", os_string); + let fallback = format!("{os_string:?}"); // 去掉可能存在的引号 fallback.trim_matches('"').to_string() } diff --git a/src-tauri/src/cmd/profile.rs b/src-tauri/src/cmd/profile.rs index 0cbc4de0..73aea6df 100644 --- a/src-tauri/src/cmd/profile.rs +++ b/src-tauri/src/cmd/profile.rs @@ -290,7 +290,7 @@ pub async fn patch_profiles_config(profiles: IProfiles) -> CmdResult { logging!(info, Type::Cmd, true, "目标配置文件语法正确"); } Ok(Err(err)) => { - let error_msg = format!(" {}", err); + let error_msg = format!(" {err}"); logging!( error, Type::Cmd, @@ -305,7 +305,7 @@ pub async fn patch_profiles_config(profiles: IProfiles) -> CmdResult { return Ok(false); } Err(join_err) => { - let error_msg = format!("YAML解析任务失败: {}", join_err); + let error_msg = format!("YAML解析任务失败: {join_err}"); logging!(error, Type::Cmd, true, "{}", error_msg); handle::Handle::notice_message( "config_validate::yaml_parse_error", @@ -316,7 +316,7 @@ pub async fn patch_profiles_config(profiles: IProfiles) -> CmdResult { } } Ok(Err(err)) => { - let error_msg = format!("无法读取目标配置文件: {}", err); + let error_msg = format!("无法读取目标配置文件: {err}"); logging!(error, Type::Cmd, true, "{}", error_msg); handle::Handle::notice_message( "config_validate::file_read_error", @@ -437,22 +437,22 @@ pub async fn patch_profiles_config(profiles: IProfiles) -> CmdResult { // 强制刷新代理缓存,确保profile切换后立即获取最新节点数据 crate::process::AsyncHandler::spawn(|| async move { if let Err(e) = super::proxy::force_refresh_proxies().await { - log::warn!(target: "app", "强制刷新代理缓存失败: {}", e); + log::warn!(target: "app", "强制刷新代理缓存失败: {e}"); } }); crate::process::AsyncHandler::spawn(|| async move { if let Err(e) = Tray::global().update_tooltip() { - log::warn!(target: "app", "异步更新托盘提示失败: {}", e); + log::warn!(target: "app", "异步更新托盘提示失败: {e}"); } if let Err(e) = Tray::global().update_menu() { - log::warn!(target: "app", "异步更新托盘菜单失败: {}", e); + log::warn!(target: "app", "异步更新托盘菜单失败: {e}"); } // 保存配置文件 if let Err(e) = Config::profiles().data().save_file() { - log::warn!(target: "app", "异步保存配置文件失败: {}", e); + log::warn!(target: "app", "异步保存配置文件失败: {e}"); } }); @@ -495,7 +495,7 @@ pub async fn patch_profiles_config(profiles: IProfiles) -> CmdResult { crate::process::AsyncHandler::spawn(|| async move { if let Err(e) = Config::profiles().data().save_file() { - log::warn!(target: "app", "异步保存恢复配置文件失败: {}", e); + log::warn!(target: "app", "异步保存恢复配置文件失败: {e}"); } }); diff --git a/src-tauri/src/cmd/system.rs b/src-tauri/src/cmd/system.rs index 7499bfb8..6dcc312a 100644 --- a/src-tauri/src/cmd/system.rs +++ b/src-tauri/src/cmd/system.rs @@ -24,7 +24,7 @@ static APP_START_TIME: Lazy = Lazy::new(|| { #[tauri::command] pub async fn export_diagnostic_info() -> CmdResult<()> { let sysinfo = PlatformSpecification::new_async().await; - let info = format!("{:?}", sysinfo); + let info = format!("{sysinfo:?}"); let app_handle = handle::Handle::global().app_handle().unwrap(); let cliboard = app_handle.clipboard(); @@ -37,7 +37,7 @@ pub async fn export_diagnostic_info() -> CmdResult<()> { #[tauri::command] pub async fn get_system_info() -> CmdResult { let sysinfo = PlatformSpecification::new_async().await; - let info = format!("{:?}", sysinfo); + let info = format!("{sysinfo:?}"); Ok(info) } diff --git a/src-tauri/src/config/encrypt.rs b/src-tauri/src/config/encrypt.rs index 1ae5e106..87b9eb85 100644 --- a/src-tauri/src/config/encrypt.rs +++ b/src-tauri/src/config/encrypt.rs @@ -21,7 +21,7 @@ pub fn encrypt_data(data: &str) -> Result> { // Encrypt data let ciphertext = cipher .encrypt(nonce.as_slice().into(), data.as_bytes()) - .map_err(|e| format!("Encryption failed: {}", e))?; + .map_err(|e| format!("Encryption failed: {e}"))?; // Concatenate nonce and ciphertext and encode them in base64 let mut combined = nonce; @@ -46,7 +46,7 @@ pub fn decrypt_data(encrypted: &str) -> Result { deleted_files.push(file_name.to_string()); - log::info!(target: "app", "已清理冗余文件: {}", file_name); + log::info!(target: "app", "已清理冗余文件: {file_name}"); } Err(e) => { - failed_deletions.push(format!("{}: {}", file_name, e)); - log::warn!(target: "app", "清理文件失败: {} - {}", file_name, e); + failed_deletions.push(format!("{file_name}: {e}")); + log::warn!(target: "app", "清理文件失败: {file_name} - {e}"); } } } @@ -681,7 +681,7 @@ impl IProfiles { Ok(()) } Err(e) => { - log::warn!(target: "app", "自动清理失败: {}", e); + log::warn!(target: "app", "自动清理失败: {e}"); Ok(()) } } diff --git a/src-tauri/src/core/async_proxy_query.rs b/src-tauri/src/core/async_proxy_query.rs index 5fabaf21..788a6d26 100644 --- a/src-tauri/src/core/async_proxy_query.rs +++ b/src-tauri/src/core/async_proxy_query.rs @@ -43,7 +43,7 @@ impl AsyncProxyQuery { proxy } Ok(Err(e)) => { - log::warn!(target: "app", "异步获取自动代理失败: {}", e); + log::warn!(target: "app", "异步获取自动代理失败: {e}"); AsyncAutoproxy::default() } Err(_) => { @@ -61,7 +61,7 @@ impl AsyncProxyQuery { proxy } Ok(Err(e)) => { - log::warn!(target: "app", "异步获取系统代理失败: {}", e); + log::warn!(target: "app", "异步获取系统代理失败: {e}"); AsyncSysproxy::default() } Err(_) => { @@ -175,7 +175,7 @@ impl AsyncProxyQuery { } let stdout = String::from_utf8_lossy(&output.stdout); - log::debug!(target: "app", "scutil output: {}", stdout); + log::debug!(target: "app", "scutil output: {stdout}"); let mut pac_enabled = false; let mut pac_url = String::new(); @@ -194,7 +194,7 @@ impl AsyncProxyQuery { } } - log::debug!(target: "app", "解析结果: pac_enabled={}, pac_url={}", pac_enabled, pac_url); + log::debug!(target: "app", "解析结果: pac_enabled={pac_enabled}, pac_url={pac_url}"); Ok(AsyncAutoproxy { enable: pac_enabled && !pac_url.is_empty(), @@ -384,7 +384,7 @@ impl AsyncProxyQuery { } let stdout = String::from_utf8_lossy(&output.stdout); - log::debug!(target: "app", "scutil proxy output: {}", stdout); + log::debug!(target: "app", "scutil proxy output: {stdout}"); let mut http_enabled = false; let mut http_host = String::new(); diff --git a/src-tauri/src/core/backup.rs b/src-tauri/src/core/backup.rs index 8f50e3e7..fa6e831e 100644 --- a/src-tauri/src/core/backup.rs +++ b/src-tauri/src/core/backup.rs @@ -108,10 +108,7 @@ impl WebDavClient { reqwest::Client::builder() .danger_accept_invalid_certs(true) .timeout(Duration::from_secs(op.timeout())) - .user_agent(format!( - "clash-verge/{} ({} WebDAV-Client)", - APP_VERSION, OS - )) + .user_agent(format!("clash-verge/{APP_VERSION} ({OS} WebDAV-Client)")) .redirect(reqwest::redirect::Policy::custom(|attempt| { // 允许所有请求类型的重定向,包括PUT if attempt.previous().len() >= 5 { @@ -177,7 +174,7 @@ impl WebDavClient { } Ok(Err(e)) => { - log::warn!("Upload failed, retrying once: {}", e); + log::warn!("Upload failed, retrying once: {e}"); tokio::time::sleep(Duration::from_millis(500)).await; timeout( Duration::from_secs(TIMEOUT_UPLOAD), @@ -237,7 +234,7 @@ impl WebDavClient { pub fn create_backup() -> Result<(String, PathBuf), Error> { let now = chrono::Local::now().format("%Y-%m-%d_%H-%M-%S").to_string(); - let zip_file_name = format!("{}-backup-{}.zip", OS, now); + let zip_file_name = format!("{OS}-backup-{now}.zip"); let zip_path = temp_dir().join(&zip_file_name); let file = fs::File::create(&zip_path)?; diff --git a/src-tauri/src/core/core.rs b/src-tauri/src/core/core.rs index 4c458982..6a4224a6 100644 --- a/src-tauri/src/core/core.rs +++ b/src-tauri/src/core/core.rs @@ -172,7 +172,7 @@ impl CoreManager { // 检查文件是否存在 if !std::path::Path::new(config_path).exists() { - let error_msg = format!("File not found: {}", config_path); + let error_msg = format!("File not found: {config_path}"); //handle::Handle::notice_message("config_validate::file_not_found", &error_msg); return Ok((false, error_msg)); } @@ -284,7 +284,7 @@ impl CoreManager { } else if !stderr.is_empty() { stderr.to_string() } else if let Some(code) = output.status.code() { - format!("验证进程异常退出,退出码: {}", code) + format!("验证进程异常退出,退出码: {code}") } else { "验证进程被终止".to_string() }; @@ -305,7 +305,7 @@ impl CoreManager { let content = match std::fs::read_to_string(config_path) { Ok(content) => content, Err(err) => { - let error_msg = format!("Failed to read file: {}", err); + let error_msg = format!("Failed to read file: {err}"); logging!(error, Type::Config, true, "无法读取文件: {}", error_msg); return Ok((false, error_msg)); } @@ -319,7 +319,7 @@ impl CoreManager { } Err(err) => { // 使用标准化的前缀,以便错误处理函数能正确识别 - let error_msg = format!("YAML syntax error: {}", err); + let error_msg = format!("YAML syntax error: {err}"); logging!(error, Type::Config, true, "YAML语法错误: {}", error_msg); Ok((false, error_msg)) } @@ -331,7 +331,7 @@ impl CoreManager { let content = match std::fs::read_to_string(path) { Ok(content) => content, Err(err) => { - let error_msg = format!("Failed to read script file: {}", err); + let error_msg = format!("Failed to read script file: {err}"); logging!(warn, Type::Config, true, "脚本语法错误: {}", err); //handle::Handle::notice_message("config_validate::script_syntax_error", &error_msg); return Ok((false, error_msg)); @@ -364,7 +364,7 @@ impl CoreManager { Ok((true, String::new())) } Err(err) => { - let error_msg = format!("Script syntax error: {}", err); + let error_msg = format!("Script syntax error: {err}"); logging!(warn, Type::Config, true, "脚本语法错误: {}", err); //handle::Handle::notice_message("config_validate::script_syntax_error", &error_msg); Ok((false, error_msg)) @@ -449,7 +449,7 @@ impl CoreManager { let mut process_futures = Vec::new(); for &target in &target_processes { let process_name = if cfg!(windows) { - format!("{}.exe", target) + format!("{target}.exe") } else { target.to_string() }; @@ -748,7 +748,7 @@ impl CoreManager { let now = Local::now(); let timestamp = now.format("%Y%m%d_%H%M%S").to_string(); - let log_path = service_log_dir.join(format!("sidecar_{}.log", timestamp)); + let log_path = service_log_dir.join(format!("sidecar_{timestamp}.log")); let mut log_file = File::create(log_path)?; @@ -864,7 +864,7 @@ impl CoreManager { let mut state = service::ServiceState::get(); if !state.prefer_sidecar { state.prefer_sidecar = true; - state.last_error = Some(format!("通过服务启动核心失败: {}", e)); + state.last_error = Some(format!("通过服务启动核心失败: {e}")); if let Err(save_err) = state.save() { logging!( error, @@ -1109,7 +1109,7 @@ impl CoreManager { } let core: &str = &clash_core.clone().unwrap(); if !IVerge::VALID_CLASH_CORES.contains(&core) { - let error_message = format!("Clash core invalid name: {}", core); + let error_message = format!("Clash core invalid name: {core}"); logging!(error, Type::Core, true, "{}", error_message); return Err(error_message); } diff --git a/src-tauri/src/core/event_driven_proxy.rs b/src-tauri/src/core/event_driven_proxy.rs index 09bbc165..6937e43a 100644 --- a/src-tauri/src/core/event_driven_proxy.rs +++ b/src-tauri/src/core/event_driven_proxy.rs @@ -166,7 +166,7 @@ impl EventDrivenProxyManager { fn send_event(&self, event: ProxyEvent) { if let Err(e) = self.event_sender.send(event) { - log::error!(target: "app", "发送代理事件失败: {}", e); + log::error!(target: "app", "发送代理事件失败: {e}"); } } @@ -183,7 +183,7 @@ impl EventDrivenProxyManager { event = event_rx.recv() => { match event { Some(event) => { - log::debug!(target: "app", "处理代理事件: {:?}", event); + log::debug!(target: "app", "处理代理事件: {event:?}"); Self::handle_event(&state, event).await; } None => { @@ -447,7 +447,7 @@ impl EventDrivenProxyManager { ); Autoproxy { enable: true, - url: format!("http://{}:{}/commands/pac", proxy_host, pac_port), + url: format!("http://{proxy_host}:{pac_port}/commands/pac"), } } @@ -489,7 +489,7 @@ impl EventDrivenProxyManager { if custom_bypass.is_empty() { default_bypass.to_string() } else if use_default { - format!("{},{}", default_bypass, custom_bypass) + format!("{default_bypass},{custom_bypass}") } else { custom_bypass } diff --git a/src-tauri/src/core/handle.rs b/src-tauri/src/core/handle.rs index a3c4a74e..d7e15187 100644 --- a/src-tauri/src/core/handle.rs +++ b/src-tauri/src/core/handle.rs @@ -125,7 +125,7 @@ impl NotificationSystem { match serde_json::to_value((status, message)) { Ok(p) => ("verge://notice-message", Ok(p)), Err(e) => { - log::error!("Failed to serialize NoticeMessage payload: {}", e); + log::error!("Failed to serialize NoticeMessage payload: {e}"); ("verge://notice-message", Err(e)) } } @@ -153,11 +153,11 @@ impl NotificationSystem { system.stats.total_sent.fetch_add(1, Ordering::SeqCst); // 记录成功发送的事件 if log::log_enabled!(log::Level::Debug) { - log::debug!("Successfully emitted event: {}", event_name_str); + log::debug!("Successfully emitted event: {event_name_str}"); } } Err(e) => { - log::warn!("Failed to emit event {}: {}", event_name_str, e); + log::warn!("Failed to emit event {event_name_str}: {e}"); system.stats.total_errors.fetch_add(1, Ordering::SeqCst); *system.stats.last_error_time.write() = Some(Instant::now()); @@ -165,8 +165,7 @@ impl NotificationSystem { const EMIT_ERROR_THRESHOLD: u64 = 10; if errors > EMIT_ERROR_THRESHOLD && !*system.emergency_mode.read() { log::warn!( - "Reached {} emit errors, entering emergency mode", - EMIT_ERROR_THRESHOLD + "Reached {EMIT_ERROR_THRESHOLD} emit errors, entering emergency mode" ); *system.emergency_mode.write() = true; } @@ -175,7 +174,7 @@ impl NotificationSystem { } else { system.stats.total_errors.fetch_add(1, Ordering::SeqCst); *system.stats.last_error_time.write() = Some(Instant::now()); - log::warn!("Skipped emitting event due to payload serialization error for {}", event_name_str); + log::warn!("Skipped emitting event due to payload serialization error for {event_name_str}"); } } else { log::warn!("No window found, skipping event emit."); @@ -215,7 +214,7 @@ impl NotificationSystem { match sender.send(event) { Ok(_) => true, Err(e) => { - log::warn!("Failed to send event to notification queue: {:?}", e); + log::warn!("Failed to send event to notification queue: {e:?}"); self.stats.total_errors.fetch_add(1, Ordering::SeqCst); *self.stats.last_error_time.write() = Some(Instant::now()); false @@ -243,7 +242,7 @@ impl NotificationSystem { log::info!("NotificationSystem worker thread joined successfully"); } Err(e) => { - log::error!("NotificationSystem worker thread join failed: {:?}", e); + log::error!("NotificationSystem worker thread join failed: {e:?}"); } } } @@ -500,7 +499,7 @@ impl Handle { }); if let Err(e) = thread_result { - log::error!("Failed to spawn startup errors thread: {}", e); + log::error!("Failed to spawn startup errors thread: {e}"); } } diff --git a/src-tauri/src/core/service.rs b/src-tauri/src/core/service.rs index 6815180f..91b2ce28 100644 --- a/src-tauri/src/core/service.rs +++ b/src-tauri/src/core/service.rs @@ -466,7 +466,7 @@ pub async fn reinstall_service() -> Result<()> { Ok(()) } Err(err) => { - let error = format!("failed to install service: {}", err); + let error = format!("failed to install service: {err}"); service_state.last_error = Some(error.clone()); service_state.prefer_sidecar = true; service_state.save()?; @@ -686,7 +686,7 @@ pub async fn check_service_needs_reinstall() -> bool { // 检查版本和可用性 match check_service_version().await { Ok(version) => { - log::info!(target: "app", "服务版本检测:当前={}, 要求={}", version, REQUIRED_SERVICE_VERSION); + log::info!(target: "app", "服务版本检测:当前={version}, 要求={REQUIRED_SERVICE_VERSION}"); /* logging!( info, Type::Service, @@ -698,8 +698,7 @@ pub async fn check_service_needs_reinstall() -> bool { let needs_reinstall = version != REQUIRED_SERVICE_VERSION; if needs_reinstall { - log::warn!(target: "app", "发现服务版本不匹配,需要重装! 当前={}, 要求={}", - version, REQUIRED_SERVICE_VERSION); + log::warn!(target: "app", "发现服务版本不匹配,需要重装! 当前={version}, 要求={REQUIRED_SERVICE_VERSION}"); logging!(warn, Type::Service, true, "服务版本不匹配,需要重装"); // log::debug!(target: "app", "当前版本字节: {:?}", version.as_bytes()); @@ -717,7 +716,7 @@ pub async fn check_service_needs_reinstall() -> bool { // 检查服务是否可用 match is_service_available().await { Ok(()) => { - log::info!(target: "app", "服务正在运行但版本检查失败: {}", err); + log::info!(target: "app", "服务正在运行但版本检查失败: {err}"); /* logging!( info, Type::Service, @@ -827,8 +826,7 @@ pub(super) async fn run_core_by_service(config_file: &PathBuf) -> Result<()> { // 先检查服务版本,不受冷却期限制 let version_check = match check_service_version().await { Ok(version) => { - log::info!(target: "app", "检测到服务版本: {}, 要求版本: {}", - version, REQUIRED_SERVICE_VERSION); + log::info!(target: "app", "检测到服务版本: {version}, 要求版本: {REQUIRED_SERVICE_VERSION}"); if version.as_bytes() != REQUIRED_SERVICE_VERSION.as_bytes() { log::warn!(target: "app", "服务版本不匹配,需要重装"); @@ -839,7 +837,7 @@ pub(super) async fn run_core_by_service(config_file: &PathBuf) -> Result<()> { } } Err(err) => { - log::warn!(target: "app", "无法获取服务版本: {}", err); + log::warn!(target: "app", "无法获取服务版本: {err}"); false } }; @@ -865,7 +863,7 @@ pub(super) async fn run_core_by_service(config_file: &PathBuf) -> Result<()> { log::info!(target: "app", "开始重装服务"); if let Err(err) = reinstall_service().await { - log::warn!(target: "app", "服务重装失败: {}", err); + log::warn!(target: "app", "服务重装失败: {err}"); log::info!(target: "app", "尝试使用现有服务"); return start_with_existing_service(config_file).await; @@ -884,7 +882,7 @@ pub(super) async fn run_core_by_service(config_file: &PathBuf) -> Result<()> { } } Err(err) => { - log::warn!(target: "app", "服务检查失败: {}", err); + log::warn!(target: "app", "服务检查失败: {err}"); } } @@ -893,7 +891,7 @@ pub(super) async fn run_core_by_service(config_file: &PathBuf) -> Result<()> { log::info!(target: "app", "服务需要重装"); if let Err(err) = reinstall_service().await { - log::warn!(target: "app", "服务重装失败: {}", err); + log::warn!(target: "app", "服务重装失败: {err}"); bail!("Failed to reinstall service: {}", err); } @@ -986,7 +984,7 @@ pub async fn force_reinstall_service() -> Result<()> { Ok(()) } Err(err) => { - log::error!(target: "app", "强制重装服务失败: {}", err); + log::error!(target: "app", "强制重装服务失败: {err}"); bail!("强制重装服务失败: {}", err) } } diff --git a/src-tauri/src/core/service_ipc.rs b/src-tauri/src/core/service_ipc.rs index dbcd6e89..4aad2e62 100644 --- a/src-tauri/src/core/service_ipc.rs +++ b/src-tauri/src/core/service_ipc.rs @@ -257,7 +257,7 @@ pub async fn send_ipc_request( logging!(info, Type::Service, true, "正在连接服务 (Unix)..."); - let command_type = format!("{:?}", command); + let command_type = format!("{command:?}"); let request = match create_signed_request(command, payload) { Ok(req) => req, diff --git a/src-tauri/src/core/sysopt.rs b/src-tauri/src/core/sysopt.rs index 4cca93f3..e7c4b4c5 100644 --- a/src-tauri/src/core/sysopt.rs +++ b/src-tauri/src/core/sysopt.rs @@ -43,7 +43,7 @@ fn get_bypass() -> String { if custom_bypass.is_empty() { DEFAULT_BYPASS.to_string() } else if use_default { - format!("{},{}", DEFAULT_BYPASS, custom_bypass) + format!("{DEFAULT_BYPASS},{custom_bypass}") } else { custom_bypass } @@ -100,7 +100,7 @@ impl Sysopt { }; let mut auto = Autoproxy { enable: false, - url: format!("http://{}:{}/commands/pac", proxy_host, pac_port), + url: format!("http://{proxy_host}:{pac_port}/commands/pac"), }; if !sys_enable { @@ -193,7 +193,7 @@ impl Sysopt { let mut autoproxy = match Autoproxy::get_auto_proxy() { Ok(ap) => ap, Err(e) => { - log::warn!(target: "app", "重置代理时获取自动代理配置失败: {}, 使用默认配置", e); + log::warn!(target: "app", "重置代理时获取自动代理配置失败: {e}, 使用默认配置"); Autoproxy { enable: false, url: "".to_string(), @@ -305,11 +305,11 @@ impl Sysopt { match autostart_manager.is_enabled() { Ok(status) => { - log::info!(target: "app", "Auto launch status: {}", status); + log::info!(target: "app", "Auto launch status: {status}"); Ok(status) } Err(e) => { - log::error!(target: "app", "Failed to get auto launch status: {}", e); + log::error!(target: "app", "Failed to get auto launch status: {e}"); Err(anyhow::anyhow!("Failed to get auto launch status: {}", e)) } } diff --git a/src-tauri/src/core/tray/mod.rs b/src-tauri/src/core/tray/mod.rs index 0fb43344..9bdbba59 100644 --- a/src-tauri/src/core/tray/mod.rs +++ b/src-tauri/src/core/tray/mod.rs @@ -473,7 +473,7 @@ impl Tray { tray.on_tray_icon_event(|_, event| { let tray_event = { Config::verge().latest().tray_event.clone() }; let tray_event: String = tray_event.unwrap_or("main_window".into()); - log::debug!(target: "app","tray event: {:?}", tray_event); + log::debug!(target: "app","tray event: {tray_event:?}"); if let TrayIconEvent::Click { button: MouseButton::Left, @@ -497,7 +497,7 @@ impl Tray { crate::module::lightweight::exit_lightweight_mode(); } let result = WindowManager::show_main_window(); - log::info!(target: "app", "窗口显示结果: {:?}", result); + log::info!(target: "app", "窗口显示结果: {result:?}"); } _ => {} } @@ -558,7 +558,7 @@ fn create_tray_menu( .is_current_profile_index(profile_uid.to_string()); CheckMenuItem::with_id( app_handle, - format!("profiles_{}", profile_uid), + format!("profiles_{profile_uid}"), t(profile_name), true, is_current_profile, @@ -781,7 +781,7 @@ fn on_menu_event(_: &AppHandle, event: MenuEvent) { crate::module::lightweight::exit_lightweight_mode(); } let result = WindowManager::show_main_window(); - log::info!(target: "app", "窗口显示结果: {:?}", result); + log::info!(target: "app", "窗口显示结果: {result:?}"); } "system_proxy" => { feat::toggle_system_proxy(); @@ -816,7 +816,7 @@ fn on_menu_event(_: &AppHandle, event: MenuEvent) { if was_lightweight { use crate::utils::window_manager::WindowManager; let result = WindowManager::show_main_window(); - log::info!(target: "app", "退出轻量模式后显示主窗口: {:?}", result); + log::info!(target: "app", "退出轻量模式后显示主窗口: {result:?}"); } } "quit" => { @@ -830,6 +830,6 @@ fn on_menu_event(_: &AppHandle, event: MenuEvent) { } if let Err(e) = Tray::global().update_all_states() { - log::warn!(target: "app", "更新托盘状态失败: {}", e); + log::warn!(target: "app", "更新托盘状态失败: {e}"); } } diff --git a/src-tauri/src/feat/backup.rs b/src-tauri/src/feat/backup.rs index d1e2dd58..08ace869 100644 --- a/src-tauri/src/feat/backup.rs +++ b/src-tauri/src/feat/backup.rs @@ -11,7 +11,7 @@ use std::fs; /// Create a backup and upload to WebDAV pub async fn create_backup_and_upload_webdav() -> Result<()> { let (file_name, temp_file_path) = backup::create_backup().map_err(|err| { - log::error!(target: "app", "Failed to create backup: {:#?}", err); + log::error!(target: "app", "Failed to create backup: {err:#?}"); err })?; @@ -19,12 +19,12 @@ pub async fn create_backup_and_upload_webdav() -> Result<()> { .upload(temp_file_path.clone(), file_name) .await { - log::error!(target: "app", "Failed to upload to WebDAV: {:#?}", err); + log::error!(target: "app", "Failed to upload to WebDAV: {err:#?}"); return Err(err); } if let Err(err) = std::fs::remove_file(&temp_file_path) { - log::warn!(target: "app", "Failed to remove temp file: {:#?}", err); + log::warn!(target: "app", "Failed to remove temp file: {err:#?}"); } Ok(()) @@ -33,7 +33,7 @@ pub async fn create_backup_and_upload_webdav() -> Result<()> { /// List WebDAV backups pub async fn list_wevdav_backup() -> Result> { backup::WebDavClient::global().list().await.map_err(|err| { - log::error!(target: "app", "Failed to list WebDAV backup files: {:#?}", err); + log::error!(target: "app", "Failed to list WebDAV backup files: {err:#?}"); err }) } @@ -44,7 +44,7 @@ pub async fn delete_webdav_backup(filename: String) -> Result<()> { .delete(filename) .await .map_err(|err| { - log::error!(target: "app", "Failed to delete WebDAV backup file: {:#?}", err); + log::error!(target: "app", "Failed to delete WebDAV backup file: {err:#?}"); err }) } @@ -62,7 +62,7 @@ pub async fn restore_webdav_backup(filename: String) -> Result<()> { .download(filename, backup_storage_path.clone()) .await .map_err(|err| { - log::error!(target: "app", "Failed to download WebDAV backup file: {:#?}", err); + log::error!(target: "app", "Failed to download WebDAV backup file: {err:#?}"); err })?; diff --git a/src-tauri/src/feat/clash.rs b/src-tauri/src/feat/clash.rs index c57e6953..8aa6d72f 100644 --- a/src-tauri/src/feat/clash.rs +++ b/src-tauri/src/feat/clash.rs @@ -49,7 +49,7 @@ fn after_change_clash_mode() { } } Err(err) => { - log::error!(target: "app", "Failed to get connections: {}", err); + log::error!(target: "app", "Failed to get connections: {err}"); } } }); @@ -113,7 +113,7 @@ pub async fn test_delay(url: String) -> anyhow::Result { match response { Ok(response) => { - log::trace!(target: "app", "test_delay response: {:#?}", response); + log::trace!(target: "app", "test_delay response: {response:#?}"); if response.status().is_success() { Ok(start.elapsed().as_millis() as u32) } else { @@ -121,7 +121,7 @@ pub async fn test_delay(url: String) -> anyhow::Result { } } Err(err) => { - log::trace!(target: "app", "test_delay error: {:#?}", err); + log::trace!(target: "app", "test_delay error: {err:#?}"); Err(err) } } diff --git a/src-tauri/src/feat/profile.rs b/src-tauri/src/feat/profile.rs index 1b76c228..83b840a6 100644 --- a/src-tauri/src/feat/profile.rs +++ b/src-tauri/src/feat/profile.rs @@ -41,10 +41,10 @@ pub async fn update_profile( let is_remote = item.itype.as_ref().is_some_and(|s| s == "remote"); if !is_remote { - log::info!(target: "app", "[订阅更新] {} 不是远程订阅,跳过更新", uid); + log::info!(target: "app", "[订阅更新] {uid} 不是远程订阅,跳过更新"); None // 非远程订阅直接更新 } else if item.url.is_none() { - log::warn!(target: "app", "[订阅更新] {} 缺少URL,无法更新", uid); + log::warn!(target: "app", "[订阅更新] {uid} 缺少URL,无法更新"); bail!("failed to get the profile item url"); } else { log::info!(target: "app", @@ -70,12 +70,12 @@ pub async fn update_profile( profiles.update_item(uid.clone(), item)?; let is_current = Some(uid.clone()) == profiles.get_current(); - log::info!(target: "app", "[订阅更新] 是否为当前使用的订阅: {}", is_current); + log::info!(target: "app", "[订阅更新] 是否为当前使用的订阅: {is_current}"); is_current && auto_refresh } Err(err) => { // 首次更新失败,尝试使用Clash代理 - log::warn!(target: "app", "[订阅更新] 正常更新失败: {},尝试使用Clash代理更新", err); + log::warn!(target: "app", "[订阅更新] 正常更新失败: {err},尝试使用Clash代理更新"); // 发送通知 handle::Handle::notice_message("update_retry_with_clash", uid.clone()); @@ -112,14 +112,14 @@ pub async fn update_profile( handle::Handle::notice_message("update_with_clash_proxy", profile_name); let is_current = Some(uid.clone()) == profiles.get_current(); - log::info!(target: "app", "[订阅更新] 是否为当前使用的订阅: {}", is_current); + log::info!(target: "app", "[订阅更新] 是否为当前使用的订阅: {is_current}"); is_current && auto_refresh } Err(retry_err) => { - log::error!(target: "app", "[订阅更新] 使用Clash代理更新仍然失败: {}", retry_err); + log::error!(target: "app", "[订阅更新] 使用Clash代理更新仍然失败: {retry_err}"); handle::Handle::notice_message( "update_failed_even_with_clash", - format!("{}", retry_err), + format!("{retry_err}"), ); return Err(retry_err); } diff --git a/src-tauri/src/feat/proxy.rs b/src-tauri/src/feat/proxy.rs index b7624302..fed2e07a 100644 --- a/src-tauri/src/feat/proxy.rs +++ b/src-tauri/src/feat/proxy.rs @@ -22,7 +22,7 @@ pub fn toggle_system_proxy() { .close_all_connections() .await { - log::error!(target: "app", "Failed to close all connections: {}", err); + log::error!(target: "app", "Failed to close all connections: {err}"); } } @@ -75,8 +75,8 @@ pub fn copy_clash_env() { let app_handle = handle::Handle::global().app_handle().unwrap(); let port = { Config::verge().latest().verge_mixed_port.unwrap_or(7897) }; - let http_proxy = format!("http://{clash_verge_rev_ip}:{}", port); - let socks5_proxy = format!("socks5://{clash_verge_rev_ip}:{}", port); + let http_proxy = format!("http://{clash_verge_rev_ip}:{port}"); + let socks5_proxy = format!("socks5://{clash_verge_rev_ip}:{port}"); let cliboard = app_handle.clipboard(); let env_type = { Config::verge().latest().env_type.clone() }; diff --git a/src-tauri/src/feat/window.rs b/src-tauri/src/feat/window.rs index 9d43ff4d..ba61640b 100644 --- a/src-tauri/src/feat/window.rs +++ b/src-tauri/src/feat/window.rs @@ -25,7 +25,7 @@ fn open_or_close_dashboard_internal(bypass_debounce: bool) { use crate::process::AsyncHandler; use crate::utils::window_manager::WindowManager; - log::info!(target: "app", "Attempting to open/close dashboard (绕过防抖: {})", bypass_debounce); + log::info!(target: "app", "Attempting to open/close dashboard (绕过防抖: {bypass_debounce})"); // 热键调用调度到主线程执行,避免 WebView 创建死锁 if bypass_debounce { @@ -39,12 +39,12 @@ fn open_or_close_dashboard_internal(bypass_debounce: bool) { crate::module::lightweight::exit_lightweight_mode(); log::info!(target: "app", "Creating new window after exiting lightweight mode"); let result = WindowManager::show_main_window(); - log::info!(target: "app", "Window operation result: {:?}", result); + log::info!(target: "app", "Window operation result: {result:?}"); return; } let result = WindowManager::toggle_main_window(); - log::info!(target: "app", "Window toggle result: {:?}", result); + log::info!(target: "app", "Window toggle result: {result:?}"); }); return; } @@ -53,12 +53,12 @@ fn open_or_close_dashboard_internal(bypass_debounce: bool) { crate::module::lightweight::exit_lightweight_mode(); log::info!(target: "app", "Creating new window after exiting lightweight mode"); let result = WindowManager::show_main_window(); - log::info!(target: "app", "Window operation result: {:?}", result); + log::info!(target: "app", "Window operation result: {result:?}"); return; } let result = WindowManager::toggle_main_window(); - log::info!(target: "app", "Window toggle result: {:?}", result); + log::info!(target: "app", "Window toggle result: {result:?}"); } /// 异步优化的应用退出函数 diff --git a/src-tauri/src/module/lightweight.rs b/src-tauri/src/module/lightweight.rs index 0b8553e5..6e77e263 100644 --- a/src-tauri/src/module/lightweight.rs +++ b/src-tauri/src/module/lightweight.rs @@ -53,7 +53,7 @@ pub fn run_once_auto_lightweight() { // 触发托盘更新 if let Err(e) = Tray::global().update_part() { - log::warn!("Failed to update tray: {}", e); + log::warn!("Failed to update tray: {e}"); } } }); @@ -77,7 +77,7 @@ pub fn auto_lightweight_mode_init() { // 确保托盘状态更新 if let Err(e) = Tray::global().update_part() { - log::warn!("Failed to update tray: {}", e); + log::warn!("Failed to update tray: {e}"); } } } @@ -96,7 +96,7 @@ pub fn set_lightweight_mode(value: bool) { // 触发托盘更新 if let Err(e) = Tray::global().update_part() { - log::warn!("Failed to update tray: {}", e); + log::warn!("Failed to update tray: {e}"); } } diff --git a/src-tauri/src/module/mihomo.rs b/src-tauri/src/module/mihomo.rs index 37eb57a7..c425510f 100644 --- a/src-tauri/src/module/mihomo.rs +++ b/src-tauri/src/module/mihomo.rs @@ -97,7 +97,7 @@ impl MihomoManager { let mut headers = HeaderMap::new(); headers.insert("Content-Type", "application/json".parse().unwrap()); if let Some(secret) = client.secret { - let secret = format!("Bearer {}", secret).parse().unwrap(); + let secret = format!("Bearer {secret}").parse().unwrap(); headers.insert("Authorization", secret); } diff --git a/src-tauri/src/utils/dirs.rs b/src-tauri/src/utils/dirs.rs index 5669a5db..23b3a1ab 100644 --- a/src-tauri/src/utils/dirs.rs +++ b/src-tauri/src/utils/dirs.rs @@ -94,7 +94,7 @@ pub fn app_home_dir() -> Result { // 如果无法获取系统目录,则回退到可执行文件目录 let fallback_dir = PathBuf::from(exe_dir).join(".config").join(APP_ID); - log::warn!(target: "app", "Using fallback data directory: {:?}", fallback_dir); + log::warn!(target: "app", "Using fallback data directory: {fallback_dir:?}"); return Ok(fallback_dir); } }; @@ -102,7 +102,7 @@ pub fn app_home_dir() -> Result { match app_handle.path().data_dir() { Ok(dir) => Ok(dir.join(APP_ID)), Err(e) => { - log::error!(target: "app", "Failed to get the app home directory: {}", e); + log::error!(target: "app", "Failed to get the app home directory: {e}"); Err(anyhow::anyhow!("Failed to get the app homedirectory")) } } @@ -127,7 +127,7 @@ pub fn app_resources_dir() -> Result { match app_handle.path().resource_dir() { Ok(dir) => Ok(dir.join("resources")), Err(e) => { - log::error!(target: "app", "Failed to get the resource directory: {}", e); + log::error!(target: "app", "Failed to get the resource directory: {e}"); Err(anyhow::anyhow!("Failed to get the resource directory")) } } @@ -203,7 +203,7 @@ pub fn service_log_file() -> Result { let log_dir = app_logs_dir()?.join("service"); let local_time = Local::now().format("%Y-%m-%d-%H%M").to_string(); - let log_file = format!("{}.log", local_time); + let log_file = format!("{local_time}.log"); let log_file = log_dir.join(log_file); let _ = std::fs::create_dir_all(&log_dir); diff --git a/src-tauri/src/utils/i18n.rs b/src-tauri/src/utils/i18n.rs index 96898735..247a7ee0 100644 --- a/src-tauri/src/utils/i18n.rs +++ b/src-tauri/src/utils/i18n.rs @@ -38,7 +38,7 @@ static TRANSLATIONS: Lazy> = Lazy::new(|| { if let Some(locales_dir) = get_locales_dir() { for lang in get_supported_languages() { - let file_path = locales_dir.join(format!("{}.json", lang)); + let file_path = locales_dir.join(format!("{lang}.json")); if let Ok(content) = fs::read_to_string(file_path) { if let Ok(json) = serde_json::from_str(&content) { translations.insert(lang.to_string(), json); diff --git a/src-tauri/src/utils/init.rs b/src-tauri/src/utils/init.rs index 3c42986d..d2c916ea 100644 --- a/src-tauri/src/utils/init.rs +++ b/src-tauri/src/utils/init.rs @@ -31,7 +31,7 @@ fn init_log() -> Result<()> { } let local_time = Local::now().format("%Y-%m-%d-%H%M").to_string(); - let log_file = format!("{}.log", local_time); + let log_file = format!("{local_time}.log"); let log_file = log_dir.join(log_file); let log_pattern = match log_level { diff --git a/src-tauri/src/utils/network.rs b/src-tauri/src/utils/network.rs index 5ec90460..9ac0fe75 100644 --- a/src-tauri/src/utils/network.rs +++ b/src-tauri/src/utils/network.rs @@ -322,7 +322,7 @@ impl NetworkManager { use crate::utils::resolve::VERSION; let version = match VERSION.get() { - Some(v) => format!("clash-verge/v{}", v), + Some(v) => format!("clash-verge/v{v}"), None => "clash-verge/unknown".to_string(), }; @@ -401,7 +401,7 @@ impl NetworkManager { let result = tokio::select! { result = request.send() => result, _ = cancel_rx => { - self.record_connection_error(&format!("Request interrupted for: {}", url)); + self.record_connection_error(&format!("Request interrupted for: {url}")); return Err(anyhow::anyhow!("Request interrupted after {} seconds", timeout_duration)); } }; diff --git a/src-tauri/src/utils/resolve.rs b/src-tauri/src/utils/resolve.rs index b90857bc..ad28365c 100644 --- a/src-tauri/src/utils/resolve.rs +++ b/src-tauri/src/utils/resolve.rs @@ -121,7 +121,7 @@ pub async fn find_unused_port() -> Result { .latest() .verge_mixed_port .unwrap_or(Config::clash().data().get_mixed_port()); - log::warn!(target: "app", "use default port: {}", port); + log::warn!(target: "app", "use default port: {port}"); Ok(port) } } @@ -530,7 +530,7 @@ pub fn create_window(is_show: bool) -> bool { } pub async fn resolve_scheme(param: String) -> Result<()> { - log::info!(target:"app", "received deep link: {}", param); + log::info!(target:"app", "received deep link: {param}"); let param_str = if param.starts_with("[") && param.len() > 4 { param @@ -568,7 +568,7 @@ pub async fn resolve_scheme(param: String) -> Result<()> { match url_param { Some(url) => { - log::info!(target:"app", "decoded subscription url: {}", url); + log::info!(target:"app", "decoded subscription url: {url}"); create_window(false); match PrfItem::from_url(url.as_ref(), name, None, None).await { diff --git a/src-tauri/src/utils/server.rs b/src-tauri/src/utils/server.rs index 39d40c37..6c8b3503 100644 --- a/src-tauri/src/utils/server.rs +++ b/src-tauri/src/utils/server.rs @@ -64,7 +64,7 @@ pub fn embed_server() { .latest() .verge_mixed_port .unwrap_or(Config::clash().data().get_mixed_port()); - let content = content.replace("%mixed-port%", &format!("{}", port)); + let content = content.replace("%mixed-port%", &format!("{port}")); warp::http::Response::builder() .header("Content-Type", "application/x-ns-proxy-autoconfig") .body(content) diff --git a/src-tauri/src/utils/window_manager.rs b/src-tauri/src/utils/window_manager.rs index f627e213..eea075c9 100644 --- a/src-tauri/src/utils/window_manager.rs +++ b/src-tauri/src/utils/window_manager.rs @@ -376,8 +376,7 @@ impl WindowManager { let is_minimized = Self::is_main_window_minimized(); format!( - "窗口状态: {:?} | 可见: {} | 有焦点: {} | 最小化: {}", - state, is_visible, is_focused, is_minimized + "窗口状态: {state:?} | 可见: {is_visible} | 有焦点: {is_focused} | 最小化: {is_minimized}" ) } }