diff --git a/src/lib.rs b/src/lib.rs index 24ec499..1b64562 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,7 +8,12 @@ unused_import_braces )] -use std::{convert::TryFrom, fmt, net::IpAddr, str::FromStr}; +use std::{ + convert::TryFrom, + fmt, + net::{IpAddr, Ipv4Addr, Ipv6Addr}, + str::FromStr, +}; mod error; mod ipv4; @@ -377,11 +382,23 @@ impl From for IpNetwork { } } +impl From for IpNetwork { + fn from(addr: Ipv4Addr) -> IpNetwork { + IpNetwork::V4(Ipv4Network::from(addr)) + } +} + +impl From for IpNetwork { + fn from(addr: Ipv6Addr) -> IpNetwork { + IpNetwork::V6(Ipv6Network::from(addr)) + } +} + impl From for IpNetwork { fn from(addr: IpAddr) -> IpNetwork { match addr { - IpAddr::V4(a) => IpNetwork::V4(Ipv4Network::from(a)), - IpAddr::V6(a) => IpNetwork::V6(Ipv6Network::from(a)), + IpAddr::V4(a) => IpNetwork::from(a), + IpAddr::V6(a) => IpNetwork::from(a), } } }