#![warn(clippy::all, rust_2018_idioms)] #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release // When compiling natively: #[cfg(not(target_arch = "wasm32"))] fn main() -> eframe::Result { // pretty_env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`). // let native_options = eframe::NativeOptions { // viewport: egui::ViewportBuilder::default() // .with_inner_size([400.0, 300.0]) // .with_min_inner_size([300.0, 220.0]), // ..Default::default() // }; // eframe::run_native( // "eframe template", // native_options, // Box::new(|cc| Ok(Box::new(TemplateApp::new(cc)))), // ) todo!() } // When compiling to web using trunk: #[cfg(target_arch = "wasm32")] fn main() { use eframe::wasm_bindgen::JsCast as _; use unshell_gui::app::TemplateApp; // Redirect `log` message to `console.log` and friends: eframe::WebLogger::init(log::LevelFilter::Debug).ok(); let web_options = eframe::WebOptions::default(); wasm_bindgen_futures::spawn_local(async { let document = web_sys::window() .expect("No window") .document() .expect("No document"); let canvas = document .get_element_by_id("the_canvas_id") .expect("Failed to find the_canvas_id") .dyn_into::() .expect("the_canvas_id was not a HtmlCanvasElement"); let start_result = eframe::WebRunner::new() .start( canvas, web_options, Box::new(|cc| Ok(Box::new(TemplateApp::new(cc)))), ) .await; // Remove the loading text and spinner: if let Some(loading_text) = document.get_element_by_id("loading_text") { match start_result { Ok(_) => { loading_text.remove(); } Err(e) => { loading_text.set_inner_html( "

The app has crashed. See the developer console for details.

", ); panic!("Failed to start eframe: {e:?}"); } } } }); }