You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.4 KiB
41 lines
1.4 KiB
use std::fmt;
|
|
|
|
/// Indicates the specific type/cause of URL error.
|
|
#[derive(PartialEq, Eq)]
|
|
pub enum UrlError {
|
|
/// TLS is used despite not being compiled with the TLS feature enabled.
|
|
TlsFeatureNotEnabled,
|
|
/// The URL does not include a host name.
|
|
NoHostName,
|
|
/// Failed to connect with this URL.
|
|
UnableToConnect(String),
|
|
/// Unsupported URL scheme used (only `ws://` or `wss://` may be used).
|
|
UnsupportedUrlScheme,
|
|
/// The URL host name, though included, is empty.
|
|
EmptyHostName,
|
|
/// The URL does not include a path/query.
|
|
NoPathOrQuery,
|
|
}
|
|
|
|
impl fmt::Debug for UrlError {
|
|
#[inline]
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match *self {
|
|
Self::TlsFeatureNotEnabled => write!(f, "TLS support not compiled in"),
|
|
Self::NoHostName => write!(f, "No host name in the URL"),
|
|
Self::UnableToConnect(ref elem) => write!(f, "Unable to connect to {}", elem),
|
|
Self::UnsupportedUrlScheme => write!(f, "URL scheme not supported"),
|
|
Self::EmptyHostName => write!(f, "URL contains empty host name"),
|
|
Self::NoPathOrQuery => write!(f, "No path/query in URL"),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl fmt::Display for UrlError {
|
|
#[inline]
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
fmt::Debug::fmt(self, f)
|
|
}
|
|
}
|
|
|
|
impl std::error::Error for UrlError {}
|
|
|