osuparse/
error.rs

1use std;
2use std::fmt::Display;
3
4pub type Result<T> = std::result::Result<T, Error>;
5
6#[derive(Debug)]
7pub enum Error {
8    Parse,
9    Syntax(Option<(usize, String)>, String),
10    Message(&'static str),
11}
12
13impl Display for Error {
14    fn fmt(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
15        match *self {
16            Error::Message(ref msg) => formatter.write_str(msg),
17            Error::Syntax(ref line, ref reason) => {
18                if let Some((line_n, line)) = line {
19                    write!(formatter, "Syntax error on line {}: {}\n {}", line_n + 1, reason, line)
20                } else {
21                    write!(formatter, "Syntax error: {}", reason)
22                }
23            },
24            Error::Parse => formatter.write_str("Parsing error"),
25        }
26    }
27}
28
29/*impl std::error::Error for Error {
30    fn description(&self) -> &str {
31        match *self {
32            Error::Message(ref msg) => msg,
33            Error::Syntax(reason) => &format!("Syntax error: {}", reason),
34        }
35    }
36}*/