use crate::{ clock_display::{ClockDisplay, DisplayError}, clock_state::ClockState, }; pub mod clock_display_view; pub mod date_display_view; #[derive(Copy, Clone, PartialEq, Eq)] #[repr(usize)] pub enum DisplayViews { ClockView = 0, ClockSecondsView = 1, ClockDateView = 2, DateView = 3, } impl DisplayViews { pub fn count() -> usize { 4 } } impl From for DisplayViews { fn from(value: usize) -> Self { match value { 0 => Self::ClockView, 1 => Self::ClockSecondsView, 2 => Self::ClockDateView, 3 => Self::DateView, _ => panic!(), } } } #[derive(Debug)] pub enum DisplayViewError { Unknown, DisplayError(DisplayError), } impl From for DisplayViewError { fn from(value: DisplayError) -> Self { Self::DisplayError(value) } } pub trait DisplayView { fn update_display( &mut self, state: &ClockState, display: &mut ClockDisplay, ) -> Result<(), DisplayViewError>; }