From 65b7fbcd130eff9e3e3304a10300b998e4ed420d Mon Sep 17 00:00:00 2001 From: "jif2.zhang" Date: Mon, 14 Sep 2026 15:37:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20shutdown=5Fflag=20=E9=97=AD=E5=8C=85?= =?UTF-8?q?=E5=80=9F=E7=94=A8/=E7=A7=BB=E5=8A=A8=E5=86=B2=E7=AA=81(E0373/E?= =?UTF-8?q?0505)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit setup 闭包借用 shutdown_flag 但要求 'static, on_window_event 又要 move 它。builder 链前各自 clone 出 setup_flag/event_flag, 两处闭包分别 move。 --- src-tauri/src/lib.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 76ad2eb..0dae0a4 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -218,6 +218,8 @@ pub fn run() { let shutdown_flag = Arc::new(AtomicBool::new(false)); let ctrlc_flag = shutdown_flag.clone(); + let setup_flag = shutdown_flag.clone(); + let event_flag = shutdown_flag.clone(); ctrlc::set_handler(move || { info!("Ctrl+C received, shutting down gracefully..."); @@ -238,7 +240,7 @@ pub fn run() { let app = tauri::Builder::default() .plugin(hotswap) .plugin(tauri_plugin_shell::init()) - .setup(|app| { + .setup(move |app| { info!("Initializing database..."); let data_dir = app.path().app_data_dir().unwrap_or_else(|_| std::path::PathBuf::from(".")); @@ -257,7 +259,7 @@ pub fn run() { db: database, auth, mcp, - shutdown_flag: shutdown_flag.clone(), + shutdown_flag: setup_flag, }); info!("Wardrobe app initialized, data dir: {:?}", data_dir); @@ -266,7 +268,7 @@ pub fn run() { .on_window_event(move |_window, event| { if let tauri::WindowEvent::Destroyed = event { info!("Window destroyed, shutting down gracefully..."); - shutdown_flag.store(true, Ordering::SeqCst); + event_flag.store(true, Ordering::SeqCst); } }) .invoke_handler(tauri::generate_handler![