[][src]Enum no_std_net::IpAddr

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.

Examples

use no_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);

Variants

An IPv4 address.

An IPv6 address.

Implementations

impl IpAddr[src]

pub const fn is_unspecified(&self) -> bool[src]

Returns true for the special 'unspecified' address.

See the documentation for Ipv4Addr::is_unspecified and Ipv6Addr::is_unspecified for more details.

Examples

use no_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 const fn is_loopback(&self) -> bool[src]

Returns true if this is a loopback address.

See the documentation for Ipv4Addr::is_loopback and Ipv6Addr::is_loopback for more details.

Examples

use no_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 const 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.

Examples

use no_std_net::{IpAddr, Ipv4Addr, Ipv6Addr};

fn main() {
    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 const fn is_multicast(&self) -> bool[src]

Returns true if this is a multicast address.

See the documentation for Ipv4Addr::is_multicast and Ipv6Addr::is_multicast for more details.

Examples

use no_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 const 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.

Examples

use no_std_net::{IpAddr, Ipv4Addr, Ipv6Addr};

fn main() {
    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 const fn is_ipv4(&self) -> bool[src]

Returns true if this address is an IPv4 address, and false otherwise.

Examples

use no_std_net::{IpAddr, Ipv4Addr, Ipv6Addr};

fn main() {
    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 const fn is_ipv6(&self) -> bool[src]

Returns true if this address is an IPv6 address, and false otherwise.

Examples

use no_std_net::{IpAddr, Ipv4Addr, Ipv6Addr};

fn main() {
    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);
}

Trait Implementations

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]

pub fn from(segments: [u16; 8]) -> IpAddr[src]

Creates an IpAddr::V6 from an eight element 16-bit array.

Examples

use no_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]

pub fn from(octets: [u8; 16]) -> IpAddr[src]

Creates an IpAddr::V6 from a sixteen element byte array.

Examples

use no_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]

pub fn from(octets: [u8; 4]) -> IpAddr[src]

Creates an IpAddr::V4 from a four element byte array.

Examples

use no_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]

pub fn from(ipv4: Ipv4Addr) -> IpAddr[src]

Copies this address to a new IpAddr::V4.

Examples

use no_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]

pub fn from(ipv6: Ipv6Addr) -> IpAddr[src]

Copies this address to a new IpAddr::V6.

Examples

use no_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.

impl Hash for IpAddr[src]

impl Ord for IpAddr[src]

impl PartialEq<IpAddr> for IpAddr[src]

impl PartialEq<IpAddr> for Ipv4Addr[src]

impl PartialEq<IpAddr> for Ipv6Addr[src]

impl PartialEq<Ipv4Addr> for IpAddr[src]

impl PartialEq<Ipv6Addr> for IpAddr[src]

impl PartialOrd<IpAddr> for IpAddr[src]

impl PartialOrd<IpAddr> for Ipv4Addr[src]

impl PartialOrd<IpAddr> for Ipv6Addr[src]

impl PartialOrd<Ipv4Addr> for IpAddr[src]

impl PartialOrd<Ipv6Addr> for IpAddr[src]

impl StructuralEq for IpAddr[src]

impl StructuralPartialEq for IpAddr[src]

Auto Trait Implementations

impl Send for IpAddr

impl Sync for IpAddr

impl Unpin for IpAddr

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[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.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.