Trait ipnet::IpSub [−][src]
Provides a saturating_sub()
method for Ipv4Addr
and Ipv6Addr
.
Subtracting an integer from an IP address returns the modified IP
address. A u32
may be subtracted from an IPv4 address and a u128
may be subtracted from an IPv6 address.
Subtracting an IP address from another IP address of the same type
returns an integer of the appropriate width. A u32
for IPv4 and a
u128
for IPv6. Subtracting IP addresses is useful for getting
the range between two IP addresses.
Examples
use std::net::{Ipv4Addr, Ipv6Addr}; use ipnet::IpSub; let min: Ipv4Addr = "0.0.0.0".parse().unwrap(); let ip1: Ipv4Addr = "192.168.1.5".parse().unwrap(); let ip2: Ipv4Addr = "192.168.1.100".parse().unwrap(); assert_eq!(min.saturating_sub(ip1), 0); assert_eq!(ip2.saturating_sub(ip1), 95); assert_eq!(min.saturating_sub(5), min); assert_eq!(ip2.saturating_sub(95), ip1); let min: Ipv6Addr = "::".parse().unwrap(); let ip1: Ipv6Addr = "fd00::5".parse().unwrap(); let ip2: Ipv6Addr = "fd00::64".parse().unwrap(); assert_eq!(min.saturating_sub(ip1), 0); assert_eq!(ip2.saturating_sub(ip1), 95); assert_eq!(min.saturating_sub(5u128), min); assert_eq!(ip2.saturating_sub(95u128), ip1);