osm_api/
error.rs

1use std::fmt::Display;
2
3use quick_xml::DeError;
4
5pub type Result<T> = std::result::Result<T, Error>;
6#[derive(Debug)]
7pub enum Error {
8    IO(std::io::Error),
9    Reqwest(reqwest::Error),
10    Http(reqwest::StatusCode),
11    XML(DeError),
12    #[cfg(feature = "json-api")]
13    JSON(serde_json::Error),
14    Other(String),
15}
16
17impl Display for Error {
18    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
19        match self {
20            Error::IO(e) => write!(f, "IO error: {}", e),
21            Error::Reqwest(e) => write!(f, "Reqwest error: {}", e),
22            Error::Http(status) => write!(f, "HTTP status: {}", status),
23            Error::XML(e) => write!(f, "Deserialize error: {}", e),
24            #[cfg(feature = "json-api")]
25            Error::JSON(e) => write!(f, "JSON error: {}", e),
26            Error::Other(e) => write!(f, "Other error: {}", e),
27        }
28    }
29}
30
31impl From<reqwest::Error> for Error {
32    fn from(e: reqwest::Error) -> Self {
33        Error::Reqwest(e)
34    }
35}
36
37impl From<DeError> for Error {
38    fn from(e: DeError) -> Self {
39        Error::XML(e)
40    }
41}
42
43impl From<serde_json::Error> for Error {
44    fn from(e: serde_json::Error) -> Self {
45        Error::JSON(e)
46    }
47}