pub enum IpAddr { V4(Ipv4Addr), V6(Ipv6Addr), }
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.
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);
V4(Ipv4Addr)
An IPv4 address.
V6(Ipv6Addr)
An IPv6 address.
impl IpAddr
[src]
pub fn is_unspecified(&self) -> bool
[src]1.12.0
Returns true
for the special 'unspecified' address.
See the documentation for Ipv4Addr::is_unspecified()
and Ipv6Addr::is_unspecified()
for more details.
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);
pub fn is_loopback(&self) -> bool
[src]1.12.0
Returns true
if this is a loopback address.
See the documentation for Ipv4Addr::is_loopback()
and Ipv6Addr::is_loopback()
for more details.
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);
pub fn is_global(&self) -> bool
[src]
Returns true
if the address appears to be globally routable.
See the documentation for Ipv4Addr::is_global()
and Ipv6Addr::is_global()
for more details.
#![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);
pub fn is_multicast(&self) -> bool
[src]1.12.0
Returns true
if this is a multicast address.
See the documentation for Ipv4Addr::is_multicast()
and Ipv6Addr::is_multicast()
for more details.
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);
pub fn is_documentation(&self) -> bool
[src]
Returns 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.
#![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 );
pub fn is_ipv4(&self) -> bool
[src]1.16.0
Returns true
if this address is an IPv4
address, and false
otherwise.
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);
pub fn is_ipv6(&self) -> bool
[src]1.16.0
Returns true
if this address is an IPv6
address, and false
otherwise.
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);
impl Clone for IpAddr
[src]
impl Copy for IpAddr
[src]
impl Debug for IpAddr
[src]
impl Display for IpAddr
[src]
impl Eq for IpAddr
[src]
impl From<[u16; 8]> for IpAddr
[src]1.17.0
fn from(segments: [u16; 8]) -> IpAddr
[src]
Creates an IpAddr::V6
from an eight element 16-bit array.
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 );
impl From<[u8; 16]> for IpAddr
[src]1.17.0
fn from(octets: [u8; 16]) -> IpAddr
[src]
Creates an IpAddr::V6
from a sixteen element byte array.
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 );
impl From<[u8; 4]> for IpAddr
[src]1.17.0
fn from(octets: [u8; 4]) -> IpAddr
[src]
Creates an IpAddr::V4
from a four element byte array.
use std::net::{IpAddr, Ipv4Addr}; let addr = IpAddr::from([13u8, 12u8, 11u8, 10u8]); assert_eq!(IpAddr::V4(Ipv4Addr::new(13, 12, 11, 10)), addr);
impl From<Ipv4Addr> for IpAddr
[src]1.16.0
fn from(ipv4: Ipv4Addr) -> IpAddr
[src]
Copies this address to a new IpAddr::V4
.
use std::net::{IpAddr, Ipv4Addr}; let addr = Ipv4Addr::new(127, 0, 0, 1); assert_eq!( IpAddr::V4(addr), IpAddr::from(addr) )
impl From<Ipv6Addr> for IpAddr
[src]1.16.0
fn from(ipv6: Ipv6Addr) -> IpAddr
[src]
Copies this address to a new IpAddr::V6
.
use std::net::{IpAddr, Ipv6Addr}; let addr = Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff); assert_eq!( IpAddr::V6(addr), IpAddr::from(addr) );
impl FromStr for IpAddr
[src]
type Err = AddrParseError
The associated error which can be returned from parsing.
fn from_str(s: &str) -> Result<IpAddr, AddrParseError>
[src]
impl Hash for IpAddr
[src]
fn hash<__H:Â Hasher>(&self, state: &mut __H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher,Â
[src]1.3.0
impl Ord for IpAddr
[src]
fn cmp(&self, other: &IpAddr) -> Ordering
[src]
fn max(self, other: Self) -> Self
[src]1.21.0
fn min(self, other: Self) -> Self
[src]1.21.0
fn clamp(self, min: Self, max: Self) -> Self
[src]
impl PartialEq<IpAddr> for IpAddr
[src]
impl PartialEq<IpAddr> for Ipv4Addr
[src]1.16.0
impl PartialEq<IpAddr> for Ipv6Addr
[src]1.16.0
impl PartialEq<Ipv4Addr> for IpAddr
[src]1.16.0
impl PartialEq<Ipv6Addr> for IpAddr
[src]1.16.0
impl PartialOrd<IpAddr> for IpAddr
[src]
fn partial_cmp(&self, other: &IpAddr) -> Option<Ordering>
[src]
fn lt(&self, other: &IpAddr) -> bool
[src]
fn le(&self, other: &IpAddr) -> bool
[src]
fn gt(&self, other: &IpAddr) -> bool
[src]
fn ge(&self, other: &IpAddr) -> bool
[src]
impl PartialOrd<IpAddr> for Ipv4Addr
[src]1.16.0
fn partial_cmp(&self, other: &IpAddr) -> Option<Ordering>
[src]
fn lt(&self, other: &Rhs) -> bool
[src]1.0.0
fn le(&self, other: &Rhs) -> bool
[src]1.0.0
fn gt(&self, other: &Rhs) -> bool
[src]1.0.0
fn ge(&self, other: &Rhs) -> bool
[src]1.0.0
impl PartialOrd<IpAddr> for Ipv6Addr
[src]1.16.0
fn partial_cmp(&self, other: &IpAddr) -> Option<Ordering>
[src]
fn lt(&self, other: &Rhs) -> bool
[src]1.0.0
fn le(&self, other: &Rhs) -> bool
[src]1.0.0
fn gt(&self, other: &Rhs) -> bool
[src]1.0.0
fn ge(&self, other: &Rhs) -> bool
[src]1.0.0
impl PartialOrd<Ipv4Addr> for IpAddr
[src]1.16.0
fn partial_cmp(&self, other: &Ipv4Addr) -> Option<Ordering>
[src]
fn lt(&self, other: &Rhs) -> bool
[src]1.0.0
fn le(&self, other: &Rhs) -> bool
[src]1.0.0
fn gt(&self, other: &Rhs) -> bool
[src]1.0.0
fn ge(&self, other: &Rhs) -> bool
[src]1.0.0
impl PartialOrd<Ipv6Addr> for IpAddr
[src]1.16.0
fn partial_cmp(&self, other: &Ipv6Addr) -> Option<Ordering>
[src]
fn lt(&self, other: &Rhs) -> bool
[src]1.0.0
fn le(&self, other: &Rhs) -> bool
[src]1.0.0
fn gt(&self, other: &Rhs) -> bool
[src]1.0.0
fn ge(&self, other: &Rhs) -> bool
[src]1.0.0
impl StructuralEq for IpAddr
[src]
impl StructuralPartialEq for IpAddr
[src]
impl RefUnwindSafe for IpAddr
impl Send for IpAddr
impl Sync for IpAddr
impl Unpin for IpAddr
impl UnwindSafe for IpAddr
impl<T> Any for T where
    T: 'static + ?Sized,Â
[src]
impl<T> Borrow<T> for T where
    T: ?Sized,Â
[src]
fn borrow(&self) -> &TⓘNotable traits for &'_ mut F
impl<'_, F> Future for &'_ mut F where
    F: Unpin + Future + ?Sized,Â
type Output = <F as Future>::Output;
impl<'_, I> Iterator for &'_ mut I where
    I: Iterator + ?Sized,Â
type Item = <I as Iterator>::Item;
impl<R:Â Read + ?Sized, '_> Read for &'_ mut R
impl<W:Â Write + ?Sized, '_> Write for &'_ mut W
[src]
impl<T> BorrowMut<T> for T where
    T: ?Sized,Â
[src]
fn borrow_mut(&mut self) -> &mut TⓘNotable traits for &'_ mut F
impl<'_, F> Future for &'_ mut F where
    F: Unpin + Future + ?Sized,Â
type Output = <F as Future>::Output;
impl<'_, I> Iterator for &'_ mut I where
    I: Iterator + ?Sized,Â
type Item = <I as Iterator>::Item;
impl<R:Â Read + ?Sized, '_> Read for &'_ mut R
impl<W:Â Write + ?Sized, '_> Write for &'_ mut W
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
    U: From<T>,Â
[src]
impl<T> ToOwned for T where
    T: Clone,Â
[src]
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
    T: Display + ?Sized,Â
[src]
impl<T, U> TryFrom<U> for T where
    U: Into<T>,Â
[src]
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
    U: TryFrom<T>,Â
[src]
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/net/enum.IpAddr.html