#![no_std]
#![feature(const_trait_impl)]
#![feature(const_destruct)]
extern crate alloc;
mod argument;
mod descriptor;
mod metadata;
mod update;
pub use argument::Argument;
use libutils_issue::Issue;
use core::fmt::{
Display,
Debug
};
pub use update::Update;
pub use metadata::Metadata;
pub use descriptor::Descriptor;
pub trait Console {
fn arguments<'valid>(&'valid self) -> &'valid [Argument];
fn open(&self, filename: &str) -> Result<impl Descriptor, Issue>;
fn problem(&self, issue: Issue, chain: &[&'static str]) -> impl Update;
fn print(&self, value: impl Display) -> impl Update;
fn debug(&self, value: impl Debug) -> impl Update;
}