diff --git a/easytier/src/proto/common.rs b/easytier/src/proto/common.rs index 89473192..067560ce 100644 --- a/easytier/src/proto/common.rs +++ b/easytier/src/proto/common.rs @@ -257,15 +257,21 @@ impl FromStr for IpInet { impl From for Url { fn from(value: url::Url) -> Self { - Url { - url: value.to_string(), - } + Url { url: value.into() } + } +} + +impl TryFrom<&Url> for url::Url { + type Error = url::ParseError; + + fn try_from(value: &Url) -> Result { + value.url.parse() } } impl From for url::Url { fn from(value: Url) -> Self { - url::Url::parse(&value.url).unwrap() + (&value).try_into().expect("failed to parse url") } } @@ -273,9 +279,7 @@ impl FromStr for Url { type Err = url::ParseError; fn from_str(s: &str) -> Result { - Ok(Url { - url: s.parse::()?.to_string(), - }) + url::Url::try_from(s).map(Into::into) } }