tmf_client/common/
tmf_error.rs1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum TMFError {
8 #[error("TMFError: {0}")]
10 NoConnection(String),
11 #[error("TMFError: {0}")]
13 Unknown(String),
14 #[error("TMFError: {0}")]
16 Serialization(String),
17}
18
19impl From<&str> for TMFError {
20 fn from(value: &str) -> Self {
21 TMFError::Unknown(value.to_string())
22 }
23}
24
25impl From<reqwest::Error> for TMFError {
26 fn from(value: reqwest::Error) -> Self {
27 TMFError::NoConnection(value.to_string())
28 }
29}
30
31impl From<TMFError> for String {
32 fn from(value: TMFError) -> Self {
33 value.to_string()
34 }
35}
36
37impl From<serde_json::Error> for TMFError {
38 fn from(value: serde_json::Error) -> Self {
39 TMFError::Serialization(value.to_string())
40 }
41}
42
43impl From<std::io::Error> for TMFError {
44 fn from(value: std::io::Error) -> Self {
45 TMFError::NoConnection(value.to_string())
46 }
47}
48
49#[cfg(test)]
50mod tests {
51 use super::*;
52 #[test]
53 fn test_error_from_str() {
54 let err = TMFError::from("ThisIsAnError");
55
56 assert_eq!(err.to_string(), "TMFError: ThisIsAnError".to_string());
57 }
58
59 #[test]
60 fn test_string_from_error() {
61 let err = TMFError::from("ThisIsAnError");
62
63 let s: String = err.into();
64 assert_eq!(s, "TMFError: ThisIsAnError".to_string());
65 }
66}