1use std::error::Error;
2use std::fmt::{Display, Formatter};
3
4#[derive(Debug)]
5pub enum UrlError {
6 ParseUrlError,
7 ParseUriError,
8 MissingParamName,
9 MissingScheme,
10 MissingDomain,
11 MissingUsername,
12 MissingPassword,
13 MissingIpv4SocketAddr,
14 MissingIpv6SocketAddr,
15 AuthInfoError,
16 InvalidParamEncoded,
17 InvalidScheme(String),
18 InvalidPort,
19}
20
21impl Display for UrlError {
22 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
23 match self {
24 UrlError::ParseUrlError => write!(f, "parse url error"),
25 UrlError::ParseUriError => write!(f, "parse uri error"),
26 UrlError::MissingParamName => write!(f, "missing param name"),
27 UrlError::MissingScheme => write!(f, "missing scheme"),
28 UrlError::MissingDomain => write!(f, "missing domain"),
29 UrlError::MissingUsername => write!(f, "missing username"),
30 UrlError::MissingPassword => write!(f, "missing password"),
31 UrlError::MissingIpv4SocketAddr => write!(f, "missing ipv4 address"),
32 UrlError::MissingIpv6SocketAddr => write!(f, "missing ipv6 address"),
33 UrlError::AuthInfoError => write!(f, "auth info error"),
34 UrlError::InvalidParamEncoded => write!(f, "invalid param encoding"),
35 UrlError::InvalidScheme(v) => write!(f, "invalid scheme-({})", v),
36 UrlError::InvalidPort => write!(f, "invalid port"),
37 }
38 }
39}
40
41impl Error for UrlError {}