#![no_std]
extern crate alloc;
mod argument;
mod handle;
use libutils_threat::Threat;
pub use argument::Argument;
use libutils_issue::Issue;
use alloc::string::String;
use core::fmt::{
Display,
Debug
};
pub use handle::Handle;
pub trait Console {
fn arguments<'valid>(&'valid self) -> &'valid [Argument];
fn read(&self, filename: &str) -> Result<String, Issue>;
fn problem(&self, threat: Threat) -> impl Handle;
fn print<Type: Display>(&self, value: Type) -> impl Handle;
fn debug<Type: Debug>(&self, value: Type) -> impl Handle;
}