thread::spawn возвращает экземпляр JoinHandle у которого есть метод .join() - при его вызове основной поток будет заблокирован и будет ждать завершение потока, который надо заджоинить.
fn main() {
let thread = thread::spawn(|| {
loop {
process();
thread::sleep(Duration::from_secs(3));
}
});
thread.join().unwrap(); // но так как у нас в потоке будет loop - дальше выполнение не пойдёт никогда
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
Второй вариант - ты можешь использовать std::sync::mpsc и с помощью него уже передать сообщение, что нужно создать окно.