Struct ip_network::Ipv6Network [−][src]
IPv6 Network.
Implementations
impl Ipv6Network
[src]
pub const LENGTH: u8
[src]
IPv4 address length in bits.
pub fn new(
network_address: Ipv6Addr,
netmask: u8
) -> Result<Self, IpNetworkError>
[src]
network_address: Ipv6Addr,
netmask: u8
) -> Result<Self, IpNetworkError>
Constructs new Ipv6Network
based on Ipv6Addr
and netmask
.
Returns error if netmask is bigger than 128 or if host bits are set in network_address
.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip = Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0); let ip_network = Ipv6Network::new(ip, 32)?; assert_eq!(ip_network.network_address(), ip); assert_eq!(ip_network.netmask(), 32);
pub fn new_truncate(
network_address: Ipv6Addr,
netmask: u8
) -> Result<Self, IpNetworkError>
[src]
network_address: Ipv6Addr,
netmask: u8
) -> Result<Self, IpNetworkError>
Constructs new Ipv6Network
based on Ipv6Addr
and netmask
with truncating host bits
from given network_address
.
Returns error if netmask is bigger than 128.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip = Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 1, 0, 0); let ip_network = Ipv6Network::new_truncate(ip, 32)?; assert_eq!(ip_network.network_address(), Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)); assert_eq!(ip_network.netmask(), 32);
pub fn network_address(&self) -> Ipv6Addr
[src]
Returns network IP address (first address in range).
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip = Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0); let ip_network = Ipv6Network::new(ip, 32)?; assert_eq!(ip_network.network_address(), ip);
pub fn netmask(&self) -> u8
[src]
Returns network mask.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip = Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0); let ip_network = Ipv6Network::new(ip, 32)?; assert_eq!(ip_network.netmask(), 32);
pub fn contains(&self, ip: Ipv6Addr) -> bool
[src]
Returns true
if given IPv6Addr
is inside this network.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip_network = Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 64)?; assert!(ip_network.contains(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1))); assert!(!ip_network.contains(Ipv6Addr::new(0x2001, 0xdb9, 0, 0, 0, 0, 0, 0)));
pub fn supernet(&self) -> Option<Self>
[src]
Returns network with smaller netmask by one. If netmask is already zero, None
will be returned.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let network = Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?; assert_eq!(network.supernet(), Some(Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 31)?));
pub fn subnets(&self) -> Ipv6NetworkIteratorⓘNotable traits for Ipv6NetworkIterator
impl Iterator for Ipv6NetworkIterator type Item = Ipv6Network;
[src]
Notable traits for Ipv6NetworkIterator
impl Iterator for Ipv6NetworkIterator type Item = Ipv6Network;
Returns Ipv6NetworkIterator
over networks with netmask bigger one.
If netmask is already 128, empty iterator will be returned.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip_network = Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?; let mut iterator = ip_network.subnets(); assert_eq!(iterator.next().unwrap(), Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 33)?); assert_eq!(iterator.last().unwrap(), Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0x8000, 0, 0, 0, 0, 0), 33)?);
pub fn subnets_with_prefix(&self, prefix: u8) -> Ipv6NetworkIteratorⓘNotable traits for Ipv6NetworkIterator
impl Iterator for Ipv6NetworkIterator type Item = Ipv6Network;
[src]
Notable traits for Ipv6NetworkIterator
impl Iterator for Ipv6NetworkIterator type Item = Ipv6Network;
Returns Ipv6NetworkIterator
over networks with defined netmask. Because len()
method
returns usize
and number of networks can be bigger than usize
, you can use real_len()
method
to get exact number of networks.
Panics
This method panics when prefix is bigger than 128 or when prefix is lower or equal than netmask.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let network = Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?; let mut iterator = network.subnets_with_prefix(33); assert_eq!(2, iterator.real_len()); assert_eq!(iterator.next().unwrap(), Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 33)?); assert_eq!(iterator.last().unwrap(), Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0x8000, 0, 0, 0, 0, 0), 33)?);
pub fn is_default_route(&self) -> bool
[src]
Returns true
for the default route network (::/0), that contains all IPv6 addresses.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0), 0)?.is_default_route());
pub fn is_unspecified(&self) -> bool
[src]
Returns true
for the special ‘unspecified’ network (::/128).
This property is defined in IETF RFC 4291.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_unspecified()); assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0), 128)?.is_unspecified());
pub fn is_loopback(&self) -> bool
[src]
Returns true
if this is a loopback network (::1/128).
This property is defined in IETF RFC 4291.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0x1), 128)?.is_loopback()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_loopback());
pub fn is_global(&self) -> bool
[src]
Returns true
if the address appears to be globally routable.
The following return false
:
- the loopback network
- link-local, site-local, and unique local unicast networks
- interface-, link-, realm-, admin- and site-local multicast networks
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_global()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0x1), 128)?.is_global()); assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0x1c9, 0, 0, 0xafc8, 0, 0x1), 128)?.is_global());
pub fn is_unique_local(&self) -> bool
[src]
Returns true
if this is a part of unique local network (fc00::/7).
This property is defined in IETF RFC 4193.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0xfc02, 0, 0, 0, 0, 0, 0, 0), 16)?.is_unique_local()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_unique_local());
pub fn is_unicast_link_local(&self) -> bool
[src]
Returns true
if the network is part of unicast and link-local (fe80::/10).
This property is defined in IETF RFC 4291.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0xfe8a, 0, 0, 0, 0, 0, 0, 0), 16)?.is_unicast_link_local()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_unicast_link_local());
pub fn is_unicast_site_local(&self) -> bool
[src]
Returns true
if this is a deprecated unicast site-local network (fec0::/10).
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0xfec2, 0, 0, 0, 0, 0, 0, 0), 16)?.is_unicast_site_local()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_unicast_site_local());
pub fn is_documentation(&self) -> bool
[src]
Returns true
if this is a part of network reserved for documentation (2001:db8::/32).
This property is defined in IETF RFC 3849.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?.is_documentation()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_documentation());
pub fn is_unicast_global(&self) -> bool
[src]
Returns true
if the network is a globally routable unicast network.
The following return false
:
- the loopback network
- the link-local network
- the (deprecated) site-local network
- unique local network
- the unspecified network
- the network range reserved for documentation
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(!Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?.is_unicast_global()); assert!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_unicast_global());
pub fn is_multicast(&self) -> bool
[src]
Returns true
if this is a part of multicast network (ff00::/8).
This property is defined by IETF RFC 4291.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; assert!(Ipv6Network::new(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0), 8)?.is_multicast()); assert!(!Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.is_multicast());
pub fn multicast_scope(&self) -> Option<Ipv6MulticastScope>
[src]
Returns the network’s multicast scope if the network is multicast.
These scopes are defined in IETF RFC 7346.
Examples
use std::net::Ipv6Addr; use ip_network::{Ipv6Network, Ipv6MulticastScope}; assert_eq!(Ipv6Network::new(Ipv6Addr::new(0xff0e, 0, 0, 0, 0, 0, 0, 0), 32)?.multicast_scope(), Some(Ipv6MulticastScope::Global)); assert_eq!(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff), 128)?.multicast_scope(), None);
Trait Implementations
impl Clone for Ipv6Network
[src]
fn clone(&self) -> Ipv6Network
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Copy for Ipv6Network
[src]
impl Debug for Ipv6Network
[src]
impl Display for Ipv6Network
[src]
fn fmt(&self, f: &mut Formatter<'_>) -> Result
[src]
Converts Ipv6Network
to string in format X:X::X/Y (CIDR notation).
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; let ip_network = Ipv6Network::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0), 32)?; assert_eq!(ip_network.to_string(), "2001:db8::/32");
impl Eq for Ipv6Network
[src]
impl From<Ipv6Addr> for Ipv6Network
[src]
impl From<Ipv6Network> for IpNetwork
[src]
fn from(network: Ipv6Network) -> Self
[src]
impl FromStr for Ipv6Network
[src]
type Err = IpNetworkParseError
The associated error which can be returned from parsing.
fn from_str(s: &str) -> Result<Ipv6Network, IpNetworkParseError>
[src]
Converts string in format X:X::X/Y (CIDR notation) to Ipv6Network
.
Examples
use std::net::Ipv6Addr; use ip_network::Ipv6Network; use std::str::FromStr; let ip_network = Ipv6Network::from_str("2001:db8::/32")?; assert_eq!(ip_network.network_address(), Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)); assert_eq!(ip_network.netmask(), 32);
impl Hash for Ipv6Network
[src]
fn hash<H: Hasher>(&self, state: &mut H)
[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl Ord for Ipv6Network
[src]
fn cmp(&self, other: &Ipv6Network) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl PartialEq<IpNetwork> for Ipv6Network
[src]
fn eq(&self, other: &IpNetwork) -> bool
[src]
#[must_use]pub fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl PartialEq<Ipv6Network> for IpNetwork
[src]
fn eq(&self, other: &Ipv6Network) -> bool
[src]
#[must_use]pub fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl PartialEq<Ipv6Network> for Ipv6Network
[src]
fn eq(&self, other: &Ipv6Network) -> bool
[src]
#[must_use]pub fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl PartialOrd<IpNetwork> for Ipv6Network
[src]
fn partial_cmp(&self, other: &IpNetwork) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl PartialOrd<Ipv6Network> for IpNetwork
[src]
fn partial_cmp(&self, other: &Ipv6Network) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl PartialOrd<Ipv6Network> for Ipv6Network
[src]
fn partial_cmp(&self, other: &Ipv6Network) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl StructuralEq for Ipv6Network
[src]
Auto Trait Implementations
impl RefUnwindSafe for Ipv6Network
impl Send for Ipv6Network
impl Sync for Ipv6Network
impl Unpin for Ipv6Network
impl UnwindSafe for Ipv6Network
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub 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]
U: TryFrom<T>,