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}" ) } }