From c233ecdbdccd55df1a27d655ed6cbf05475c4d64 Mon Sep 17 00:00:00 2001 From: imbolc Date: Sat, 22 Mar 2025 11:56:04 +0600 Subject: [PATCH] Impl From for IpNetwork --- src/lib.rs | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) 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), } } }