use std::fmt::{Display, Formatter};
use crate::parse::Error::*;
#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug)]
pub enum Error {
InvalidScheme,
InvalidHost,
InvalidPort,
InvalidPath,
InvalidQuery,
InvalidParam,
InvalidFragment,
UrlTooLong,
}
impl Error {
pub const fn message(&self) -> &'static str {
match self {
InvalidScheme => "invalid scheme",
InvalidHost => "invalid host",
InvalidPort => "invalid port",
InvalidPath => "invalid path",
InvalidQuery => "invalid query",
InvalidParam => "invalid query parameter",
InvalidFragment => "invalid fragment",
UrlTooLong => "URL too long (>= 4 GiB)",
}
}
}
impl Display for Error {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.message())
}
}
impl std::error::Error for Error {}