From c3af07d69a1a073f290e392baafa63ad480e6550 Mon Sep 17 00:00:00 2001 From: Imbolc Date: Sun, 23 Mar 2025 02:30:10 +0600 Subject: [PATCH] Impl From for IpNetwork (#218) --- 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), } } }