Trait ipnet::IpAdd [] [src]

pub trait IpAdd<RHS = Self> {
    type Output;
    fn saturating_add(self, rhs: RHS) -> Self::Output;
}

Provides a saturating_add() method for Ipv4Addr and Ipv6Addr.

Panics

When attempting to add an IpAddr::V4 from an IpAddr::V6 and vice versa.

Examples

use std::net::{Ipv4Addr, Ipv6Addr};
use std::str::FromStr;
use ipnet::{IpAdd, Emu128};

let ip0 = Ipv4Addr::from_str("0.0.0.0").unwrap();
let ip1 = Ipv4Addr::from_str("0.0.0.1").unwrap();
let ip2 = Ipv4Addr::from_str("255.255.255.254").unwrap();
let ip3 = Ipv4Addr::from_str("255.255.255.255").unwrap();

assert_eq!(ip0.saturating_add(1u32), ip1);
assert_eq!(ip2.saturating_add(1u32), ip3);
assert_eq!(ip2.saturating_add(1u32), ip3);

let ip60 = Ipv6Addr::from_str("fd00::").unwrap();
let ip61 = Ipv6Addr::from_str("fd00::1").unwrap();
let ip62 = Ipv6Addr::from_str("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe").unwrap();
let ip63 = Ipv6Addr::from_str("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff").unwrap();

assert_eq!(ip60.saturating_add(1u32), ip61);
assert_eq!(ip62.saturating_add(1u32), ip63);
assert_eq!(ip62.saturating_add(1u32), ip63);

Associated Types

Required Methods

Implementors