Expand description
An IP address, either IPv4 or IPv6.
This enum can contain either an Ipv4Addr or an Ipv6Addr, see their
respective documentation for more details.
The size of an IpAddr instance may vary depending on the target operating
system.
Examples
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
let localhost_v4 = IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1));
let localhost_v6 = IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1));
assert_eq!("127.0.0.1".parse(), Ok(localhost_v4));
assert_eq!("::1".parse(), Ok(localhost_v6));
assert_eq!(localhost_v4.is_ipv6(), false);
assert_eq!(localhost_v4.is_ipv4(), true);RunVariants
V4(Ipv4Addr)
An IPv4 address.
V6(Ipv6Addr)
An IPv6 address.
Implementations
impl IpAddr
source
impl IpAddr
sourcepub const fn is_unspecified(&self) -> bool
1.12.0 (const: 1.50.0) · source
pub const fn is_unspecified(&self) -> bool
1.12.0 (const: 1.50.0) · sourceReturns true for the special ‘unspecified’ address.
See the documentation for Ipv4Addr::is_unspecified() and
Ipv6Addr::is_unspecified() for more details.
Examples
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
assert_eq!(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)).is_unspecified(), true);
assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)).is_unspecified(), true);Runpub const fn is_loopback(&self) -> bool
1.12.0 (const: 1.50.0) · source
pub const fn is_loopback(&self) -> bool
1.12.0 (const: 1.50.0) · sourceReturns true if this is a loopback address.
See the documentation for Ipv4Addr::is_loopback() and
Ipv6Addr::is_loopback() for more details.
Examples
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
assert_eq!(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)).is_loopback(), true);
assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0x1)).is_loopback(), true);Runpub fn is_global(&self) -> bool
const: unstable · source
pub fn is_global(&self) -> bool
const: unstable · sourceReturns true if the address appears to be globally routable.
See the documentation for Ipv4Addr::is_global() and
Ipv6Addr::is_global() for more details.
Examples
#![feature(ip)]
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
assert_eq!(IpAddr::V4(Ipv4Addr::new(80, 9, 12, 3)).is_global(), true);
assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0x1c9, 0, 0, 0xafc8, 0, 0x1)).is_global(), true);Runpub const fn is_multicast(&self) -> bool
1.12.0 (const: 1.50.0) · source
pub const fn is_multicast(&self) -> bool
1.12.0 (const: 1.50.0) · sourceReturns true if this is a multicast address.
See the documentation for Ipv4Addr::is_multicast() and
Ipv6Addr::is_multicast() for more details.
Examples
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
assert_eq!(IpAddr::V4(Ipv4Addr::new(224, 254, 0, 0)).is_multicast(), true);
assert_eq!(IpAddr::V6(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0)).is_multicast(), true);Runpub fn is_documentation(&self) -> bool
const: unstable · source
pub fn is_documentation(&self) -> bool
const: unstable · sourceReturns true if this address is in a range designated for documentation.
See the documentation for Ipv4Addr::is_documentation() and
Ipv6Addr::is_documentation() for more details.
Examples
#![feature(ip)]
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_documentation(), true);
assert_eq!(
IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_documentation(),
true
);Runpub const fn is_benchmarking(&self) -> bool
source
pub const fn is_benchmarking(&self) -> bool
sourceReturns true if this address is in a range designated for benchmarking.
See the documentation for Ipv4Addr::is_benchmarking() and
Ipv6Addr::is_benchmarking() for more details.
Examples
#![feature(ip)]
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
assert_eq!(IpAddr::V4(Ipv4Addr::new(198, 19, 255, 255)).is_benchmarking(), true);
assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0x2, 0, 0, 0, 0, 0, 0)).is_benchmarking(), true);Runpub const fn is_ipv4(&self) -> bool
1.16.0 (const: 1.50.0) · source
pub const fn is_ipv4(&self) -> bool
1.16.0 (const: 1.50.0) · sourceReturns true if this address is an IPv4 address, and false
otherwise.
Examples
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_ipv4(), true);
assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_ipv4(), false);Runpub const fn is_ipv6(&self) -> bool
1.16.0 (const: 1.50.0) · source
pub const fn is_ipv6(&self) -> bool
1.16.0 (const: 1.50.0) · sourceReturns true if this address is an IPv6 address, and false
otherwise.
Examples
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_ipv6(), false);
assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_ipv6(), true);Runpub fn to_canonical(&self) -> IpAddr
const: unstable · source
pub fn to_canonical(&self) -> IpAddr
const: unstable · sourceConverts this address to an IpAddr::V4 if it is an IPv4-mapped IPv6 addresses, otherwise it
return self as-is.
Examples
#![feature(ip)]
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
assert_eq!(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)).to_canonical().is_loopback(), true);
assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1)).is_loopback(), false);
assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1)).to_canonical().is_loopback(), true);RunTrait Implementations
impl From<[u16; 8]> for IpAddr
1.17.0 · source
impl From<[u16; 8]> for IpAddr
1.17.0 · sourcefn from(segments: [u16; 8]) -> IpAddr
source
fn from(segments: [u16; 8]) -> IpAddr
sourceCreates an IpAddr::V6 from an eight element 16-bit array.
Examples
use std::net::{IpAddr, Ipv6Addr};
let addr = IpAddr::from([
525u16, 524u16, 523u16, 522u16,
521u16, 520u16, 519u16, 518u16,
]);
assert_eq!(
IpAddr::V6(Ipv6Addr::new(
0x20d, 0x20c,
0x20b, 0x20a,
0x209, 0x208,
0x207, 0x206
)),
addr
);Runimpl From<[u8; 16]> for IpAddr
1.17.0 · source
impl From<[u8; 16]> for IpAddr
1.17.0 · sourcefn from(octets: [u8; 16]) -> IpAddr
source
fn from(octets: [u8; 16]) -> IpAddr
sourceCreates an IpAddr::V6 from a sixteen element byte array.
Examples
use std::net::{IpAddr, Ipv6Addr};
let addr = IpAddr::from([
25u8, 24u8, 23u8, 22u8, 21u8, 20u8, 19u8, 18u8,
17u8, 16u8, 15u8, 14u8, 13u8, 12u8, 11u8, 10u8,
]);
assert_eq!(
IpAddr::V6(Ipv6Addr::new(
0x1918, 0x1716,
0x1514, 0x1312,
0x1110, 0x0f0e,
0x0d0c, 0x0b0a
)),
addr
);Runimpl FromStr for IpAddr
source
impl FromStr for IpAddr
sourcetype Err = AddrParseError
type Err = AddrParseError
The associated error which can be returned from parsing.
impl Ord for IpAddr
source
impl Ord for IpAddr
sourceimpl PartialOrd<IpAddr> for IpAddr
source
impl PartialOrd<IpAddr> for IpAddr
sourcefn partial_cmp(&self, other: &IpAddr) -> Option<Ordering>
source
fn partial_cmp(&self, other: &IpAddr) -> Option<Ordering>
sourceThis method returns an ordering between self and other values if one exists. Read more
fn lt(&self, other: &Rhs) -> bool
1.0.0 · source
fn lt(&self, other: &Rhs) -> bool
1.0.0 · sourceThis method tests less than (for self and other) and is used by the < operator. Read more
fn le(&self, other: &Rhs) -> bool
1.0.0 · source
fn le(&self, other: &Rhs) -> bool
1.0.0 · sourceThis method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
impl PartialOrd<IpAddr> for Ipv4Addr
1.16.0 · source
impl PartialOrd<IpAddr> for Ipv4Addr
1.16.0 · sourcefn partial_cmp(&self, other: &IpAddr) -> Option<Ordering>
source
fn partial_cmp(&self, other: &IpAddr) -> Option<Ordering>
sourceThis method returns an ordering between self and other values if one exists. Read more
fn lt(&self, other: &Rhs) -> bool
1.0.0 · source
fn lt(&self, other: &Rhs) -> bool
1.0.0 · sourceThis method tests less than (for self and other) and is used by the < operator. Read more
fn le(&self, other: &Rhs) -> bool
1.0.0 · source
fn le(&self, other: &Rhs) -> bool
1.0.0 · sourceThis method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
impl PartialOrd<IpAddr> for Ipv6Addr
1.16.0 · source
impl PartialOrd<IpAddr> for Ipv6Addr
1.16.0 · sourcefn partial_cmp(&self, other: &IpAddr) -> Option<Ordering>
source
fn partial_cmp(&self, other: &IpAddr) -> Option<Ordering>
sourceThis method returns an ordering between self and other values if one exists. Read more
fn lt(&self, other: &Rhs) -> bool
1.0.0 · source
fn lt(&self, other: &Rhs) -> bool
1.0.0 · sourceThis method tests less than (for self and other) and is used by the < operator. Read more
fn le(&self, other: &Rhs) -> bool
1.0.0 · source
fn le(&self, other: &Rhs) -> bool
1.0.0 · sourceThis method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
impl PartialOrd<Ipv4Addr> for IpAddr
1.16.0 · source
impl PartialOrd<Ipv4Addr> for IpAddr
1.16.0 · sourcefn partial_cmp(&self, other: &Ipv4Addr) -> Option<Ordering>
source
fn partial_cmp(&self, other: &Ipv4Addr) -> Option<Ordering>
sourceThis method returns an ordering between self and other values if one exists. Read more
fn lt(&self, other: &Rhs) -> bool
1.0.0 · source
fn lt(&self, other: &Rhs) -> bool
1.0.0 · sourceThis method tests less than (for self and other) and is used by the < operator. Read more
fn le(&self, other: &Rhs) -> bool
1.0.0 · source
fn le(&self, other: &Rhs) -> bool
1.0.0 · sourceThis method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
impl PartialOrd<Ipv6Addr> for IpAddr
1.16.0 · source
impl PartialOrd<Ipv6Addr> for IpAddr
1.16.0 · sourcefn partial_cmp(&self, other: &Ipv6Addr) -> Option<Ordering>
source
fn partial_cmp(&self, other: &Ipv6Addr) -> Option<Ordering>
sourceThis method returns an ordering between self and other values if one exists. Read more
fn lt(&self, other: &Rhs) -> bool
1.0.0 · source
fn lt(&self, other: &Rhs) -> bool
1.0.0 · sourceThis method tests less than (for self and other) and is used by the < operator. Read more
fn le(&self, other: &Rhs) -> bool
1.0.0 · source
fn le(&self, other: &Rhs) -> bool
1.0.0 · sourceThis method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
impl Copy for IpAddr
sourceimpl Eq for IpAddr
sourceimpl StructuralEq for IpAddr
sourceimpl StructuralPartialEq for IpAddr
sourceAuto Trait Implementations
impl RefUnwindSafe for IpAddr
impl Send for IpAddr
impl Sync for IpAddr
impl Unpin for IpAddr
impl UnwindSafe for IpAddr
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
source
impl<T> BorrowMut<T> for T where
T: ?Sized,
sourcefn borrow_mut(&mut self) -> &mut T
const: unstable · source
fn borrow_mut(&mut self) -> &mut T
const: unstable · sourceMutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone,
source
impl<T> ToOwned for T where
T: Clone,
sourcetype Owned = T
type Owned = T
The resulting type after obtaining ownership.
fn clone_into(&self, target: &mut T)
source
fn clone_into(&self, target: &mut T)
sourceUses borrowed data to replace owned data, usually by cloning. Read more