use crate::views::{main_menu::MainMenu, scan_menu::ScanMenu, settings_menu::SettingsMenu}; use crate::navigation::navigation::Navigable; #[derive(Debug, Clone)] pub enum View { Main(MainMenu), Scan(ScanMenu), Settings(SettingsMenu), } impl Navigable for View { fn display( &self, display: &mut crate::display::primary_lcd::PrimaryLcdDisplay<'static>, ) -> impl core::future::Future + Send { async move { match self { View::Main(main_menu) => main_menu.display(display).await, View::Scan(scan_menu) => scan_menu.display(display).await, View::Settings(settings_menu) => settings_menu.display(display).await, } } } fn handle_input( &self, input: crate::navigation::navigation::Action, ) -> impl core::future::Future + Send { async move { match self { View::Main(main_menu) => main_menu.handle_input(input).await, View::Scan(scan_menu) => scan_menu.handle_input(input).await, View::Settings(settings_menu) => settings_menu.handle_input(input).await, } } } }