Skip to main content

bpi_rs/err/
from.rs

1use super::error::BpiError;
2
3// 从reqwest错误转换
4impl From<reqwest::Error> for BpiError {
5    fn from(err: reqwest::Error) -> Self {
6        let message = if err.is_timeout() {
7            "请求超时".to_string()
8        } else if err.is_connect() {
9            "连接失败".to_string()
10        } else if err.is_request() {
11            format!("请求错误: {}", err)
12        } else if err.is_decode() {
13            format!("响应解析错误: {}", err)
14        } else {
15            err.to_string()
16        };
17
18        BpiError::Network { message }
19    }
20}
21
22// 从API响应转换
23impl<T> From<crate::response::BpiResponse<T>> for BpiError {
24    fn from(resp: crate::response::BpiResponse<T>) -> Self {
25        BpiError::from_api_response(resp)
26    }
27}
28
29// 从JSON序列化错误转换
30impl From<serde_json::Error> for BpiError {
31    fn from(err: serde_json::Error) -> Self {
32        BpiError::Parse {
33            message: err.to_string(),
34        }
35    }
36}