From 75ad15c324414d62cc309e1362c582c4d88199f3 Mon Sep 17 00:00:00 2001 From: Luna Yao <40349250+ZnqbuZ@users.noreply.github.com> Date: Wed, 18 Feb 2026 18:51:55 +0100 Subject: [PATCH] utils: add From<&NameServerAddr> for Url --- easytier/src/dns/utils.rs | 12 +++++++++--- easytier/src/dns/zone.rs | 6 ++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/easytier/src/dns/utils.rs b/easytier/src/dns/utils.rs index f7cb3f41..192d7121 100644 --- a/easytier/src/dns/utils.rs +++ b/easytier/src/dns/utils.rs @@ -49,12 +49,18 @@ pub struct NameServerAddr { addr: SocketAddr, } -impl From 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 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()) } } diff --git a/easytier/src/dns/zone.rs b/easytier/src/dns/zone.rs index 5db5135a..a3b1375a 100644 --- a/easytier/src/dns/zone.rs +++ b/easytier/src/dns/zone.rs @@ -200,8 +200,10 @@ impl Zone { A: AsRef, { let name_servers = forwarders - .into_iter() - .map(|s| s.as_ref().parse::().map(Into::into)) + .map(|f| { + let addr: NameServerAddr = f.as_ref().parse()?; + Ok((&addr).into()) + }) .collect::>>()? .into(); self.forward = Some(ForwardConfig {