Struct embedded_nal_async::Ipv4Addr
source · [−]pub struct Ipv4Addr { /* private fields */ }Expand description
An IPv4 address.
IPv4 addresses are defined as 32-bit integers in IETF RFC 791. They are usually represented as four octets.
See IpAddr for a type encompassing both IPv4 and IPv6 addresses.
Textual representation
Ipv4Addr provides a FromStr implementation. The four octets are in decimal
notation, divided by . (this is called “dot-decimal notation”).
Examples
use no_std_net::Ipv4Addr;
let localhost = Ipv4Addr::new(127, 0, 0, 1);
assert_eq!("127.0.0.1".parse(), Ok(localhost));
assert_eq!(localhost.is_loopback(), true);Implementations
sourceimpl Ipv4Addr
impl Ipv4Addr
sourcepub const fn new(a: u8, b: u8, c: u8, d: u8) -> Ipv4Addr
pub const fn new(a: u8, b: u8, c: u8, d: u8) -> Ipv4Addr
Creates a new IPv4 address from four eight-bit octets.
The result will represent the IP address a.b.c.d.
Examples
use no_std_net::Ipv4Addr;
let addr = Ipv4Addr::new(127, 0, 0, 1);sourcepub const fn localhost() -> Ipv4Addr
pub const fn localhost() -> Ipv4Addr
Creates a new IPv4 address with the address pointing to localhost: 127.0.0.1.
Examples
use no_std_net::Ipv4Addr;
let addr = Ipv4Addr::localhost();
assert_eq!(addr, Ipv4Addr::new(127, 0, 0, 1));sourcepub const fn unspecified() -> Ipv4Addr
pub const fn unspecified() -> Ipv4Addr
Creates a new IPv4 address representing an unspecified address: 0.0.0.0
Examples
use no_std_net::Ipv4Addr;
let addr = Ipv4Addr::unspecified();
assert_eq!(addr, Ipv4Addr::new(0, 0, 0, 0));sourcepub const fn octets(&self) -> [u8; 4]
pub const fn octets(&self) -> [u8; 4]
Returns the four eight-bit integers that make up this address.
Examples
use no_std_net::Ipv4Addr;
let addr = Ipv4Addr::new(127, 0, 0, 1);
assert_eq!(addr.octets(), [127, 0, 0, 1]);sourcepub const fn is_unspecified(&self) -> bool
pub const fn is_unspecified(&self) -> bool
Returns true for the special ‘unspecified’ address (0.0.0.0).
This property is defined in UNIX Network Programming, Second Edition, W. Richard Stevens, p. 891; see also ip7.
Examples
use no_std_net::Ipv4Addr;
assert_eq!(Ipv4Addr::new(0, 0, 0, 0).is_unspecified(), true);
assert_eq!(Ipv4Addr::new(45, 22, 13, 197).is_unspecified(), false);sourcepub const fn is_loopback(&self) -> bool
pub const fn is_loopback(&self) -> bool
Returns true if this is a loopback address (127.0.0.0/8).
This property is defined by IETF RFC 1122.
Examples
use no_std_net::Ipv4Addr;
assert_eq!(Ipv4Addr::new(127, 0, 0, 1).is_loopback(), true);
assert_eq!(Ipv4Addr::new(45, 22, 13, 197).is_loopback(), false);sourcepub const fn is_private(&self) -> bool
pub const fn is_private(&self) -> bool
Returns true if this is a private address.
The private address ranges are defined in IETF RFC 1918 and include:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
Examples
use no_std_net::Ipv4Addr;
assert_eq!(Ipv4Addr::new(10, 0, 0, 1).is_private(), true);
assert_eq!(Ipv4Addr::new(10, 10, 10, 10).is_private(), true);
assert_eq!(Ipv4Addr::new(172, 16, 10, 10).is_private(), true);
assert_eq!(Ipv4Addr::new(172, 29, 45, 14).is_private(), true);
assert_eq!(Ipv4Addr::new(172, 32, 0, 2).is_private(), false);
assert_eq!(Ipv4Addr::new(192, 168, 0, 2).is_private(), true);
assert_eq!(Ipv4Addr::new(192, 169, 0, 2).is_private(), false);sourcepub const fn is_link_local(&self) -> bool
pub const fn is_link_local(&self) -> bool
Returns true if the address is link-local (169.254.0.0/16).
This property is defined by IETF RFC 3927.
Examples
use no_std_net::Ipv4Addr;
assert_eq!(Ipv4Addr::new(169, 254, 0, 0).is_link_local(), true);
assert_eq!(Ipv4Addr::new(169, 254, 10, 65).is_link_local(), true);
assert_eq!(Ipv4Addr::new(16, 89, 10, 65).is_link_local(), false);sourcepub const fn is_global(&self) -> bool
pub const fn is_global(&self) -> bool
Returns true if the address appears to be globally routable.
See iana-ipv4-special-registry.
The following return false:
- private address (10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16)
- the loopback address (127.0.0.0/8)
- the link-local address (169.254.0.0/16)
- the broadcast address (255.255.255.255/32)
- test addresses used for documentation (192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24)
- the unspecified address (0.0.0.0)
Examples
use no_std_net::Ipv4Addr;
fn main() {
assert_eq!(Ipv4Addr::new(10, 254, 0, 0).is_global(), false);
assert_eq!(Ipv4Addr::new(192, 168, 10, 65).is_global(), false);
assert_eq!(Ipv4Addr::new(172, 16, 10, 65).is_global(), false);
assert_eq!(Ipv4Addr::new(0, 0, 0, 0).is_global(), false);
assert_eq!(Ipv4Addr::new(80, 9, 12, 3).is_global(), true);
}sourcepub const fn is_multicast(&self) -> bool
pub const fn is_multicast(&self) -> bool
Returns true if this is a multicast address (224.0.0.0/4).
Multicast addresses have a most significant octet between 224 and 239, and is defined by IETF RFC 5771.
Examples
use no_std_net::Ipv4Addr;
assert_eq!(Ipv4Addr::new(224, 254, 0, 0).is_multicast(), true);
assert_eq!(Ipv4Addr::new(236, 168, 10, 65).is_multicast(), true);
assert_eq!(Ipv4Addr::new(172, 16, 10, 65).is_multicast(), false);sourcepub const fn is_broadcast(&self) -> bool
pub const fn is_broadcast(&self) -> bool
Returns true if this is a broadcast address (255.255.255.255).
A broadcast address has all octets set to 255 as defined in IETF RFC 919.
Examples
use no_std_net::Ipv4Addr;
assert_eq!(Ipv4Addr::new(255, 255, 255, 255).is_broadcast(), true);
assert_eq!(Ipv4Addr::new(236, 168, 10, 65).is_broadcast(), false);sourcepub const fn is_documentation(&self) -> bool
pub const fn is_documentation(&self) -> bool
Returns true if this address is in a range designated for documentation.
This is defined in IETF RFC 5737:
- 192.0.2.0/24 (TEST-NET-1)
- 198.51.100.0/24 (TEST-NET-2)
- 203.0.113.0/24 (TEST-NET-3)
Examples
use no_std_net::Ipv4Addr;
assert_eq!(Ipv4Addr::new(192, 0, 2, 255).is_documentation(), true);
assert_eq!(Ipv4Addr::new(198, 51, 100, 65).is_documentation(), true);
assert_eq!(Ipv4Addr::new(203, 0, 113, 6).is_documentation(), true);
assert_eq!(Ipv4Addr::new(193, 34, 17, 19).is_documentation(), false);sourcepub const fn to_ipv6_compatible(&self) -> Ipv6Addr
pub const fn to_ipv6_compatible(&self) -> Ipv6Addr
Converts this address to an IPv4-compatible IPv6 address.
a.b.c.d becomes ::a.b.c.d
Examples
use no_std_net::{Ipv4Addr, Ipv6Addr};
assert_eq!(Ipv4Addr::new(192, 0, 2, 255).to_ipv6_compatible(),
Ipv6Addr::new(0, 0, 0, 0, 0, 0, 49152, 767));sourcepub const fn to_ipv6_mapped(&self) -> Ipv6Addr
pub const fn to_ipv6_mapped(&self) -> Ipv6Addr
Converts this address to an IPv4-mapped IPv6 address.
a.b.c.d becomes ::ffff:a.b.c.d
Examples
use no_std_net::{Ipv4Addr, Ipv6Addr};
assert_eq!(Ipv4Addr::new(192, 0, 2, 255).to_ipv6_mapped(),
Ipv6Addr::new(0, 0, 0, 0, 0, 65535, 49152, 767));Trait Implementations
sourceimpl Ord for Ipv4Addr
impl Ord for Ipv4Addr
1.21.0 · sourcefn max(self, other: Self) -> Self
fn max(self, other: Self) -> Self
Compares and returns the maximum of two values. Read more
1.21.0 · sourcefn min(self, other: Self) -> Self
fn min(self, other: Self) -> Self
Compares and returns the minimum of two values. Read more
1.50.0 · sourcefn clamp(self, min: Self, max: Self) -> Self where
Self: PartialOrd<Self>,
fn clamp(self, min: Self, max: Self) -> Self where
Self: PartialOrd<Self>,
Restrict a value to a certain interval. Read more
sourceimpl PartialOrd<IpAddr> for Ipv4Addr
impl PartialOrd<IpAddr> for Ipv4Addr
sourcefn partial_cmp(&self, other: &IpAddr) -> Option<Ordering>
fn partial_cmp(&self, other: &IpAddr) -> Option<Ordering>
This method returns an ordering between self and other values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
sourceimpl PartialOrd<Ipv4Addr> for IpAddr
impl PartialOrd<Ipv4Addr> for IpAddr
sourcefn partial_cmp(&self, other: &Ipv4Addr) -> Option<Ordering>
fn partial_cmp(&self, other: &Ipv4Addr) -> Option<Ordering>
This method returns an ordering between self and other values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
sourceimpl PartialOrd<Ipv4Addr> for Ipv4Addr
impl PartialOrd<Ipv4Addr> for Ipv4Addr
sourcefn partial_cmp(&self, other: &Ipv4Addr) -> Option<Ordering>
fn partial_cmp(&self, other: &Ipv4Addr) -> Option<Ordering>
This method returns an ordering between self and other values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
impl Copy for Ipv4Addr
impl Eq for Ipv4Addr
impl StructuralEq for Ipv4Addr
impl StructuralPartialEq for Ipv4Addr
Auto Trait Implementations
impl RefUnwindSafe for Ipv4Addr
impl Send for Ipv4Addr
impl Sync for Ipv4Addr
impl Unpin for Ipv4Addr
impl UnwindSafe for Ipv4Addr
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more