scaleway_rs/
scaleway_error.rs

1use std::fmt::Display;
2use crate::api_error::ScalewayApiError;
3
4#[derive(Debug)]
5pub enum ScalewayError {
6    Reqwest(reqwest::Error),
7    Api(ScalewayApiError),
8    Json(),
9}
10
11impl From<reqwest::Error> for ScalewayError {
12    fn from(value: reqwest::Error) -> Self {
13        ScalewayError::Reqwest(value)
14    }
15}
16
17impl Display for ScalewayError {
18    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
19        match self {
20            ScalewayError::Reqwest(err) => write!(f, "Request: {}", err),
21            ScalewayError::Api(err) => write!(f, "Api: {} - {}", err.etype, err.message),
22            ScalewayError::Json() => write!(f, "JSON"),
23        }
24    }
25}
26
27impl std::error::Error for ScalewayError {
28    fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
29        None
30    }
31
32    fn cause(&self) -> Option<&dyn std::error::Error> {
33        self.source()
34    }
35}