Skip to main content

mocra_proxy/
error.rs

1//! mocra-proxy 的错误类型。
2//!
3//! 独立于宿主 crate —— 作为可单独使用的库,proxy 有自己的 `ProxyError` / `Result`;
4//! 宿主 `mocra` 通过 `impl From<ProxyError> for mocra::Error` 在边界纳入自身 Error 体系。
5
6use thiserror::Error;
7
8/// 装箱的底层错误源(与宿主 `mocra::BoxError` 同形)。
9pub type BoxError = Box<dyn std::error::Error + Send + Sync + 'static>;
10
11/// mocra-proxy 的 `Result` 别名。
12pub type Result<T> = std::result::Result<T, ProxyError>;
13
14/// 代理子系统错误。
15#[derive(Debug, Error)]
16pub enum ProxyError {
17    #[error("invalid config: {0}")]
18    InvalidConfig(#[source] BoxError),
19    #[error("missing field: {0}")]
20    MissingField(#[source] BoxError),
21    #[error("parse error: {0}")]
22    ParseError(#[source] BoxError),
23    #[error("get proxy error: {0}")]
24    GetProxy(#[source] BoxError),
25    #[error("proxy not found")]
26    ProxyNotFound,
27    #[error("proxy not available: {0}")]
28    ProxyNotAvailable(#[source] BoxError),
29    #[error("proxy already expired")]
30    ProxyExpired,
31    #[error("proxy provider already expired")]
32    ProxyProviderExpired,
33    #[error("proxy connection failed")]
34    ProxyConnectionFailed,
35    #[error("proxy authentication failed")]
36    ProxyAuthenticationFailed,
37}