use alloc::string::String;
use alloc::vec::Vec;

pub mod frame;
pub mod render;
pub mod window;

pub trait Application {
    type Output;

    fn run(
        &mut self,
        args: Vec<String>,
    ) -> impl Future<Output = Result<Self::Output, Error>> + Send;
}

#[derive(Debug)]
pub enum Error {
    UnknownCommand(String),
    ApplicationFailed(String),
    KernelError(String),
}
