use alloc::string::String;
use thiserror::Error;
pub type Result<T> = core::result::Result<T, HttpUrlError>;
#[derive(Error, Debug, Clone, PartialEq, Eq)]
pub enum HttpUrlError {
#[error("URL is empty")]
EmptyUrl,
#[error("missing scheme (expected 'http' or 'https')")]
MissingScheme,
#[error("unsupported scheme: '{0}'")]
UnsupportedScheme(String),
#[error("missing host")]
MissingHost,
#[error("invalid port: '{0}'")]
InvalidPort(String),
#[error("port out of range: {0}")]
PortOutOfRange(u64),
#[error("invalid host: '{0}'")]
InvalidHost(String),
#[error("invalid percent-encoding: '{0}'")]
InvalidPercentEncoding(String),
#[error("unicode normalization error")]
UnicodeError,
#[error("builder validation error: {0}")]
BuilderValidation(String),
}