Skip to content

Commit 2e1071b

Browse files
committed
feat: impl std::error::Error for ProxyError
1 parent e73a766 commit 2e1071b

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

src/lib.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ use hyper::http::uri::InvalidUri;
99
use hyper::upgrade::OnUpgrade;
1010
use hyper::{Body, Client, Error, Request, Response, StatusCode};
1111
use lazy_static::lazy_static;
12+
use std::error::Error as StdError;
13+
use std::fmt::{Display, Formatter, Result as FmtResult};
1214
use std::net::IpAddr;
1315
use tokio::io::copy_bidirectional;
1416

@@ -42,6 +44,28 @@ pub enum ProxyError {
4244
UpgradeError(String),
4345
}
4446

47+
impl Display for ProxyError {
48+
fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
49+
match self {
50+
ProxyError::InvalidUri(err) => write!(f, "InvalidUri: {err}"),
51+
ProxyError::HyperError(err) => write!(f, "HyperError: {err}"),
52+
ProxyError::ForwardHeaderError => write!(f, "ForwardHeaderError"),
53+
ProxyError::UpgradeError(err) => write!(f, "UpgradeError: {err}"),
54+
}
55+
}
56+
}
57+
58+
impl StdError for ProxyError {
59+
fn source(&self) -> Option<&(dyn StdError + 'static)> {
60+
match self {
61+
ProxyError::InvalidUri(err) => err.source(),
62+
ProxyError::HyperError(err) => err.source(),
63+
ProxyError::ForwardHeaderError => None,
64+
ProxyError::UpgradeError(..) => None,
65+
}
66+
}
67+
}
68+
4569
impl From<Error> for ProxyError {
4670
fn from(err: Error) -> ProxyError {
4771
ProxyError::HyperError(err)

0 commit comments

Comments
 (0)