mod collection ; mod error ; mod persistence ; mod ui ; mod utility ; use { gtk4 :: { gio :: spawn_blocking , glib :: * } , libadwaita :: { * , prelude :: * } , } ; use crate :: { error :: * , persistence :: * , ui :: * } ; fn main () -> ExitCode { let application = Application :: builder () . application_id ("com.kernelmaft.zoodex") . build () ; application . connect_activate (on_activate) ; application . run () } fn on_activate ( app : & Application ) { let ui = UI :: new (app) ; ui . show_window () ; spawn_future_local ( async move { async_result_context ( async { let collection = spawn_blocking ( || read_collection_file () ) . await ? ? ; ui . render_collection (collection) ; Ok (()) } , |_| () , |error| { ui . close_window () ; } ) . await ; } ) ; }