use display_interface::WriteOnlyDataCommand;
use crate::properties::DisplayProperties;
pub struct DisplayMode<MODE>(pub MODE);
pub trait DisplayModeTrait<DI> {
fn new(properties: DisplayProperties<DI>) -> Self;
fn release(self) -> DisplayProperties<DI>;
}
impl<MODE> DisplayMode<MODE> {
pub fn new<DI>(properties: DisplayProperties<DI>) -> Self
where
DI: WriteOnlyDataCommand,
MODE: DisplayModeTrait<DI>,
{
DisplayMode(MODE::new(properties))
}
pub fn into<DI, NMODE: DisplayModeTrait<DI>>(self) -> NMODE
where
DI: WriteOnlyDataCommand,
MODE: DisplayModeTrait<DI>,
{
let properties = self.0.release();
NMODE::new(properties)
}
}