#![forbid(unsafe_code)] use crate::terminal::error::TerminalError; #[derive(Debug)] pub enum Error { IO(std::io::Error), Terminal(TerminalError), } impl std::error::Error for Error { } impl std::fmt::Display for Error { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Error::IO(e) => e.fmt(f), Error::Terminal(e) => e.fmt(f), } } } impl From<()> for Error { fn from(_: ()) -> Error { unreachable!() } } impl From for Error { fn from(e: std::io::Error) -> Error { Error::IO(e) } } impl From for Error { fn from(e: TerminalError) -> Error { Error::Terminal(e) } }