railway_provider_hafas/
error.rs1use 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>;