aboutsummaryrefslogtreecommitdiff
path: root/src/util/config.rs
diff options
context:
space:
mode:
authorTrinity Pointard <trinity.pointard@gmail.com>2021-03-18 03:44:00 +0100
committerTrinity Pointard <trinity.pointard@gmail.com>2021-03-18 19:47:51 +0100
commit81e9db783fd7f104ad3d15d60436a8767172e0df (patch)
tree821d478aade116cdb88149c8aab28e615ff3e5db /src/util/config.rs
parentae3b7029a971e94658c46952ed87c3c14b3dd666 (diff)
downloadgarage-81e9db783fd7f104ad3d15d60436a8767172e0df.tar.gz
garage-81e9db783fd7f104ad3d15d60436a8767172e0df.zip
simplify addresse deserialialiser and limit allocations
Diffstat (limited to 'src/util/config.rs')
-rw-r--r--src/util/config.rs30
1 files changed, 7 insertions, 23 deletions
diff --git a/src/util/config.rs b/src/util/config.rs
index fe6ab979..313692fc 100644
--- a/src/util/config.rs
+++ b/src/util/config.rs
@@ -1,4 +1,3 @@
-use std::fmt;
use std::io::Read;
use std::net::SocketAddr;
use std::path::PathBuf;
@@ -92,28 +91,13 @@ fn deserialize_addr<'de, D>(deserializer: D) -> Result<SocketAddr, D::Error>
where
D: de::Deserializer<'de>,
{
- struct AddrVisitor;
-
- impl<'de> de::Visitor<'de> for AddrVisitor {
- type Value = SocketAddr;
-
- fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
- formatter.write_str("a string representing a socket address")
- }
-
- fn visit_str<E>(self, s: &str) -> Result<Self::Value, E>
- where
- E: de::Error,
- {
- use std::net::ToSocketAddrs;
- s.to_socket_addrs()
- .map_err(|_| de::Error::custom("could not resolve to a socket address"))?
- .next()
- .ok_or(de::Error::custom("could not resolve to a socket address"))
- }
- }
+ use std::net::ToSocketAddrs;
- deserializer.deserialize_any(AddrVisitor)
+ <&str>::deserialize(deserializer)?
+ .to_socket_addrs()
+ .map_err(|_| de::Error::custom("could not resolve to a socket address"))?
+ .next()
+ .ok_or(de::Error::custom("could not resolve to a socket address"))
}
fn deserialize_vec_addr<'de, D>(deserializer: D) -> Result<Vec<SocketAddr>, D::Error>
@@ -123,7 +107,7 @@ where
use std::net::ToSocketAddrs;
let mut res = vec![];
- for s in <Vec<String>>::deserialize(deserializer)? {
+ for s in <Vec<&str>>::deserialize(deserializer)? {
res.push(
s.to_socket_addrs()
.map_err(|_| de::Error::custom("could not resolve to a socket address"))?