1use crate::iter::chars::BadUnicode;
2
3pub type ReplResult<T> = std::result::Result<T, Error>;
5#[derive(Debug)]
7pub enum Error {
8 CtrlC(String),
10 CtrlD(String),
12 BadUnicode(u32),
14 IoFailure(std::io::Error),
16 EndOfInput,
18}
19
20impl std::error::Error for Error {}
21impl std::fmt::Display for Error {
22 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
23 match self {
24 Error::CtrlC(_) => write!(f, "Ctrl+C"),
25 Error::CtrlD(_) => write!(f, "Ctrl+D"),
26 Error::BadUnicode(u) => write!(f, "\\u{{{u:x}}} is not a valid unicode codepoint"),
27 Error::IoFailure(s) => write!(f, "{s}"),
28 Error::EndOfInput => write!(f, "End of input"),
29 }
30 }
31}
32impl From<std::io::Error> for Error {
33 fn from(value: std::io::Error) -> Self {
34 Self::IoFailure(value)
35 }
36}
37impl From<BadUnicode> for Error {
38 fn from(value: BadUnicode) -> Self {
39 let BadUnicode(code) = value;
40 Self::BadUnicode(code)
41 }
42}