railway_provider_hafas/
error.rs

1use thiserror::Error as ThisError;
2
3#[derive(ThisError, Debug)]
4pub enum ParseError {
5    #[error("{info}")]
6    InvalidData { info: String },
7    #[error("source")]
8    Chrono {
9        #[from]
10        source: chrono::ParseError,
11    },
12    #[error("source")]
13    Int {
14        #[from]
15        source: std::num::ParseIntError,
16    },
17}
18
19impl From<String> for ParseError {
20    fn from(info: String) -> ParseError {
21        ParseError::InvalidData { info }
22    }
23}
24
25impl From<&str> for ParseError {
26    fn from(info: &str) -> ParseError {
27        ParseError::InvalidData {
28            info: info.to_string(),
29        }
30    }
31}
32
33#[derive(ThisError, Debug)]
34pub enum Error {
35    #[error("{source}")]
36    Json {
37        #[from]
38        source: serde_json::Error,
39    },
40    #[error("{source}")]
41    Parse {
42        #[from]
43        source: ParseError,
44    },
45    #[error("{text}")]
46    Hafas { code: String, text: String },
47    #[error("{0}")]
48    InvalidInput(String),
49}
50
51pub type Result<T> = std::result::Result<T, Error>;
52pub type ParseResult<T> = std::result::Result<T, ParseError>;