1
2
3
4
5
6
7
8
9
10
11
12
13
use core::fmt::Debug;

/// A device.
pub trait Device {
    type Error: Debug;

    /// Reads from standard input.
    fn read(&mut self) -> Result<Option<u8>, Self::Error>;
    /// Writes to standard output.
    fn write(&mut self, byte: u8) -> Result<(), Self::Error>;
    /// Writes to standard error.
    fn write_error(&mut self, byte: u8) -> Result<(), Self::Error>;
}