use crate::{dns, domain, email, Result};
use psl_types::List;
pub trait DomainName {
fn parse_domain_name<'a>(&self, name: &'a str) -> Result<'a, domain::Name<'a>>;
}
impl<T> DomainName for T
where
T: List,
{
fn parse_domain_name<'a>(&self, name: &'a str) -> Result<'a, domain::Name<'a>> {
domain::Name::parse(self, name).map_err(|kind| kind.error_with(name))
}
}
pub trait DnsName {
fn parse_dns_name<'a>(&self, name: &'a str) -> Result<'a, dns::Name<'a>>;
}
impl<T> DnsName for T
where
T: List,
{
fn parse_dns_name<'a>(&self, name: &'a str) -> Result<'a, dns::Name<'a>> {
dns::Name::parse(self, name).map_err(|kind| kind.error_with(name))
}
}
pub trait EmailAddress {
fn parse_email_address<'a>(&self, name: &'a str) -> Result<'a, email::Address<'a>>;
}
impl<T> EmailAddress for T
where
T: List,
{
fn parse_email_address<'a>(&self, name: &'a str) -> Result<'a, email::Address<'a>> {
email::Address::parse(self, name).map_err(|kind| kind.error_with(name))
}
}