Improve error message when using blocking Client inside a Future
This commit is contained in:
24
src/error.rs
24
src/error.rs
@@ -148,13 +148,13 @@ impl Error {
|
|||||||
Kind::Io(ref e) => Some(e),
|
Kind::Io(ref e) => Some(e),
|
||||||
Kind::UrlEncoded(ref e) => Some(e),
|
Kind::UrlEncoded(ref e) => Some(e),
|
||||||
Kind::Json(ref e) => Some(e),
|
Kind::Json(ref e) => Some(e),
|
||||||
Kind::Executor(ref e) => Some(e),
|
|
||||||
Kind::UrlBadScheme |
|
Kind::UrlBadScheme |
|
||||||
Kind::TooManyRedirects |
|
Kind::TooManyRedirects |
|
||||||
Kind::RedirectLoop |
|
Kind::RedirectLoop |
|
||||||
Kind::Status(_) |
|
Kind::Status(_) |
|
||||||
Kind::UnknownProxyScheme |
|
Kind::UnknownProxyScheme |
|
||||||
Kind::Timer => None,
|
Kind::Timer |
|
||||||
|
Kind::BlockingClientInFutureContext => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,6 +248,8 @@ impl fmt::Debug for Error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BLOCK_IN_FUTURE: &'static str = "blocking Client used inside a Future context";
|
||||||
|
|
||||||
impl fmt::Display for Error {
|
impl fmt::Display for Error {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
if let Some(ref url) = self.inner.url {
|
if let Some(ref url) = self.inner.url {
|
||||||
@@ -287,7 +289,7 @@ impl fmt::Display for Error {
|
|||||||
}
|
}
|
||||||
Kind::UnknownProxyScheme => f.write_str("Unknown proxy scheme"),
|
Kind::UnknownProxyScheme => f.write_str("Unknown proxy scheme"),
|
||||||
Kind::Timer => f.write_str("timer unavailable"),
|
Kind::Timer => f.write_str("timer unavailable"),
|
||||||
Kind::Executor(ref e) => fmt::Display::fmt(e, f),
|
Kind::BlockingClientInFutureContext => f.write_str(BLOCK_IN_FUTURE),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -324,7 +326,7 @@ impl StdError for Error {
|
|||||||
}
|
}
|
||||||
Kind::UnknownProxyScheme => "Unknown proxy scheme",
|
Kind::UnknownProxyScheme => "Unknown proxy scheme",
|
||||||
Kind::Timer => "timer unavailable",
|
Kind::Timer => "timer unavailable",
|
||||||
Kind::Executor(ref e) => e.description(),
|
Kind::BlockingClientInFutureContext => BLOCK_IN_FUTURE,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -347,13 +349,13 @@ impl StdError for Error {
|
|||||||
Kind::Io(ref e) => e.cause(),
|
Kind::Io(ref e) => e.cause(),
|
||||||
Kind::UrlEncoded(ref e) => e.cause(),
|
Kind::UrlEncoded(ref e) => e.cause(),
|
||||||
Kind::Json(ref e) => e.cause(),
|
Kind::Json(ref e) => e.cause(),
|
||||||
Kind::Executor(ref e) => e.cause(),
|
|
||||||
Kind::UrlBadScheme |
|
Kind::UrlBadScheme |
|
||||||
Kind::TooManyRedirects |
|
Kind::TooManyRedirects |
|
||||||
Kind::RedirectLoop |
|
Kind::RedirectLoop |
|
||||||
Kind::Status(_) |
|
Kind::Status(_) |
|
||||||
Kind::UnknownProxyScheme |
|
Kind::UnknownProxyScheme |
|
||||||
Kind::Timer => None,
|
Kind::Timer |
|
||||||
|
Kind::BlockingClientInFutureContext => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -374,13 +376,13 @@ impl StdError for Error {
|
|||||||
Kind::Io(ref e) => e.source(),
|
Kind::Io(ref e) => e.source(),
|
||||||
Kind::UrlEncoded(ref e) => e.source(),
|
Kind::UrlEncoded(ref e) => e.source(),
|
||||||
Kind::Json(ref e) => e.source(),
|
Kind::Json(ref e) => e.source(),
|
||||||
Kind::Executor(ref e) => e.source(),
|
|
||||||
Kind::UrlBadScheme |
|
Kind::UrlBadScheme |
|
||||||
Kind::TooManyRedirects |
|
Kind::TooManyRedirects |
|
||||||
Kind::RedirectLoop |
|
Kind::RedirectLoop |
|
||||||
Kind::Status(_) |
|
Kind::Status(_) |
|
||||||
Kind::UnknownProxyScheme |
|
Kind::UnknownProxyScheme |
|
||||||
Kind::Timer => None,
|
Kind::Timer |
|
||||||
|
Kind::BlockingClientInFutureContext => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -408,7 +410,7 @@ pub(crate) enum Kind {
|
|||||||
Status(StatusCode),
|
Status(StatusCode),
|
||||||
UnknownProxyScheme,
|
UnknownProxyScheme,
|
||||||
Timer,
|
Timer,
|
||||||
Executor(EnterError),
|
BlockingClientInFutureContext,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -487,8 +489,8 @@ where T: Into<Kind> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl From<EnterError> for Kind {
|
impl From<EnterError> for Kind {
|
||||||
fn from(err: EnterError) -> Kind {
|
fn from(_err: EnterError) -> Kind {
|
||||||
Kind::Executor(err)
|
Kind::BlockingClientInFutureContext
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user