#[cfg(not(feature = "std"))]
use alloc::string::String;
#[cfg(not(feature = "std"))]
use core::net::AddrParseError;
#[cfg(feature = "std")]
use std::net::AddrParseError;
#[cfg(feature = "std")]
use std::string::String;
use thiserror::Error;
#[derive(Error, Debug, PartialEq, Eq, Clone)]
#[non_exhaustive]
pub enum DomainParseError {
#[error("Domain exceeds maximum length of {max_length}: {length}")]
DomainLengthExceeded { length: usize, max_length: usize },
#[error("Invalid characters in domain: {character_set}")]
InvalidCharacters { character_set: String },
#[error("Unsported Domain Type")]
UnsupportedDomainType,
#[error(transparent)]
IpParseError(#[from] AddrParseError),
#[error("DNS Label exceeds maximum length of {max_dns_length} characters")]
DnsLabelTooLong { max_dns_length: usize },
}
#[derive(Error, Debug, PartialEq, Eq, Clone)]
#[non_exhaustive]
pub enum EmailParseError {
#[error("Invalid format for display name")]
InvalidDisplayFormat,
#[error("Invalid characters in email address: {character_set}")]
InvalidCharacters { character_set: String },
#[error("Invalid escape sequence in quoted string: {sequence}")]
InvalidEscapeSequence { sequence: String },
#[error("Missing domain in email address")]
MissingDomain,
#[error("Missing local part in email address")]
MissingLocalPart,
#[error("Local part exceeds maximum length of {max_length}: {length}")]
LocalPartLengthExceeded { length: usize, max_length: usize },
#[error(transparent)]
DomainParseError(#[from] DomainParseError),
}