/src/console/traits.rs
use crate::console::Key;

pub trait ConsoleIO {
    // input
    fn readkey(&mut self) -> Option<Key>;
    fn readline(&mut self, buf: &mut [u8]) -> usize;
    fn discard(&mut self);

    // output
    fn pos(&mut self, x: usize, y: usize);
    fn writeb(&mut self, b: u8);
    fn write<T: AsRef<[u8]>>(&mut self, a: T);
    fn clear(&mut self);
}