utils: add From<&NameServerAddr> for Url

This commit is contained in:
Luna Yao
2026-02-18 18:51:55 +01:00
parent 83bdcf0d2b
commit 75ad15c324
2 changed files with 13 additions and 5 deletions
+9 -3
View File
@@ -49,12 +49,18 @@ pub struct NameServerAddr {
addr: SocketAddr,
}
impl From<NameServerAddr> for NameServerConfig {
fn from(value: NameServerAddr) -> Self {
impl From<&NameServerAddr> for NameServerConfig {
fn from(value: &NameServerAddr) -> Self {
Self::new(value.addr, value.protocol)
}
}
impl From<&NameServerAddr> for Url {
fn from(value: &NameServerAddr) -> Self {
Url::parse(&format!("{}://{}", value.protocol, value.addr)).unwrap()
}
}
impl TryFrom<Url> for NameServerAddr {
type Error = Error;
@@ -101,6 +107,6 @@ impl FromStr for NameServerAddr {
impl Display for NameServerAddr {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "{}://{}", self.protocol, self.addr)
f.write_str(Url::from(self).as_str())
}
}
+4 -2
View File
@@ -200,8 +200,10 @@ impl Zone {
A: AsRef<str>,
{
let name_servers = forwarders
.into_iter()
.map(|s| s.as_ref().parse::<NameServerAddr>().map(Into::into))
.map(|f| {
let addr: NameServerAddr = f.as_ref().parse()?;
Ok((&addr).into())
})
.collect::<anyhow::Result<Vec<_>>>()?
.into();
self.forward = Some(ForwardConfig {