Struct ureq::Transport [−][src]
pub struct Transport { /* fields omitted */ }
Expand description
Error that is not a status code error. For instance, DNS name not found, connection refused, or malformed response.
Transport::kind()
provides a classification (same as forError::kind
).Transport::message()
might vary for the same classification to give more context.Transport::source()
holds the underlying error with even more details.
use ureq::ErrorKind;
use std::error::Error;
use url::ParseError;
let result = ureq::get("broken/url").call();
let error = result.unwrap_err().into_transport().unwrap();
// the display trait is a combo of the underlying classifications
assert_eq!(error.to_string(),
"Bad URL: failed to parse URL: RelativeUrlWithoutBase: relative URL without a base");
// classification
assert_eq!(error.kind(), ErrorKind::InvalidUrl);
assert_eq!(error.kind().to_string(), "Bad URL");
// higher level message
assert_eq!(error.message(), Some("failed to parse URL: RelativeUrlWithoutBase"));
// boxed underlying error
let source = error.source().unwrap();
// downcast to original error
let downcast: &ParseError = source.downcast_ref().unwrap();
assert_eq!(downcast.to_string(), "relative URL without a base");