cleanup From impls

This commit is contained in:
Robin Appelman 2021-08-18 17:19:04 +02:00
commit 7b33c0d79d

View file

@ -1,4 +1,4 @@
use ipnetwork::{IpNetwork, Ipv4Network, Ipv6Network}; use ipnetwork::IpNetwork;
use rfc7239::{parse, Forwarded, NodeIdentifier, NodeName}; use rfc7239::{parse, Forwarded, NodeIdentifier, NodeName};
use std::borrow::Cow; use std::borrow::Cow;
use std::convert::Infallible; use std::convert::Infallible;
@ -23,27 +23,19 @@ impl IpNetworks {
impl From<Vec<IpAddr>> for IpNetworks { impl From<Vec<IpAddr>> for IpNetworks {
fn from(addrs: Vec<IpAddr>) -> Self { fn from(addrs: Vec<IpAddr>) -> Self {
addrs.iter().collect() addrs.into_iter().collect()
} }
} }
impl From<&Vec<IpAddr>> for IpNetworks { impl From<&[IpAddr]> for IpNetworks {
fn from(addrs: &Vec<IpAddr>) -> Self { fn from(addrs: &[IpAddr]) -> Self {
addrs.iter().collect() addrs.iter().copied().collect()
} }
} }
impl<'a> FromIterator<&'a IpAddr> for IpNetworks { impl FromIterator<IpAddr> for IpNetworks {
fn from_iter<T: IntoIterator<Item = &'a IpAddr>>(addrs: T) -> Self { fn from_iter<T: IntoIterator<Item = IpAddr>>(addrs: T) -> Self {
addrs addrs.into_iter().map(IpNetwork::from).collect()
.into_iter()
.map(|&addr| -> IpNetwork {
match addr {
IpAddr::V4(addr) => Ipv4Network::from(addr).into(),
IpAddr::V6(addr) => Ipv6Network::from(addr).into(),
}
})
.collect()
} }
} }