mod lab_trait; mod lab1; mod lab3; mod lab6; use lab_trait::Lab; use eframe::egui; fn main() { let options = eframe::NativeOptions::default(); eframe::run_native( "Криптографические методы защиты информации", options, Box::new(|_cc| Box::new(Application::default())), ); } struct Application { labs: Vec>, } impl Default for Application { fn default() -> Self { Self { labs: vec![ Box::new(lab1::Window::default()), Box::new(lab3::Window::default()), Box::new(lab6::Window::default()), ], } } } impl eframe::App for Application { fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { for window in &mut self.labs { egui::Window::new(window.get_name()) .show(ctx, |ui| window.update(ui)); } } }