use std::sync::mpsc::channel; use crate::application::{LANToolkit, Messages, WINDOW_HEIGHT, WINDOW_WIDTH}; use iced::Theme::TokyoNight; use iced::Size; use crate::config::Config; use crate::worker::WorkerState; mod application; mod worker; mod config; fn main() { let (tx,rx) = channel::(); let state = WorkerState { tx: tx.clone() }; let cfg = Config::default(); let res = std::thread::Builder::new() .name("Worker Thread".to_string()) .spawn(worker::worker_main(state.clone(), rx)); if res.is_err() { println!("Failed to start worker thread: {}", res.err().unwrap()); return; } // 我发现这个库真的很tm喜欢把函数当参数传来传去:( let res = iced::application(LANToolkit::boot(state.clone(), cfg.clone()), LANToolkit::update, LANToolkit::view) .title(|state: &LANToolkit| state.cfg.window_name.clone()) .window_size(Size::new(WINDOW_WIDTH as f32,WINDOW_HEIGHT as f32)) .theme(TokyoNight) .run(); if res.is_err() { println!("Failed to start main window: {}", res.err().unwrap()); return; } }