Struct ipnetwork::Ipv6Network
source · pub struct Ipv6Network { /* private fields */ }
Expand description
Represents a network range where the IP addresses are of v6
Implementations§
source§impl Ipv6Network
impl Ipv6Network
sourcepub const fn new(
addr: Ipv6Addr,
prefix: u8
) -> Result<Ipv6Network, IpNetworkError>
pub const fn new( addr: Ipv6Addr, prefix: u8 ) -> Result<Ipv6Network, IpNetworkError>
Constructs a new Ipv6Network
from any Ipv6Addr
and a prefix denoting the network size.
If the prefix is larger than 128 this will return an IpNetworkError::InvalidPrefix
.
sourcepub fn with_netmask(
netaddr: Ipv6Addr,
netmask: Ipv6Addr
) -> Result<Self, IpNetworkError>
pub fn with_netmask( netaddr: Ipv6Addr, netmask: Ipv6Addr ) -> Result<Self, IpNetworkError>
Constructs a new Ipv6Network
from a network address and a network mask.
If the netmask is not valid this will return an IpNetworkError::InvalidPrefix
.
sourcepub fn iter(&self) -> Ipv6NetworkIterator ⓘ
pub fn iter(&self) -> Ipv6NetworkIterator ⓘ
Returns an iterator over Ipv6Network
. Each call to next
will return the next
Ipv6Addr
in the given network. None
will be returned when there are no more
addresses.
sourcepub fn network(&self) -> Ipv6Addr
pub fn network(&self) -> Ipv6Addr
Returns the address of the network denoted by this Ipv6Network
.
This means the lowest possible IPv6 address inside of the network.
Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let net: Ipv6Network = "2001:db8::/96".parse().unwrap();
assert_eq!(net.network(), Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0));
sourcepub fn broadcast(&self) -> Ipv6Addr
pub fn broadcast(&self) -> Ipv6Addr
Returns the broadcast address of this Ipv6Network
.
This means the highest possible IPv4 address inside of the network.
Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let net: Ipv6Network = "2001:db8::/96".parse().unwrap();
assert_eq!(net.broadcast(), Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0xffff, 0xffff));
pub fn ip(&self) -> Ipv6Addr
pub fn prefix(&self) -> u8
sourcepub fn is_subnet_of(self, other: Ipv6Network) -> bool
pub fn is_subnet_of(self, other: Ipv6Network) -> bool
Checks if the given Ipv6Network
is a subnet of the other.
sourcepub fn is_supernet_of(self, other: Ipv6Network) -> bool
pub fn is_supernet_of(self, other: Ipv6Network) -> bool
Checks if the given Ipv6Network
is a supernet of the other.
sourcepub fn overlaps(self, other: Ipv6Network) -> bool
pub fn overlaps(self, other: Ipv6Network) -> bool
Checks if the given Ipv6Network
is partly contained in other.
sourcepub fn mask(&self) -> Ipv6Addr
pub fn mask(&self) -> Ipv6Addr
Returns the mask for this Ipv6Network
.
That means the prefix
most significant bits will be 1 and the rest 0
Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let net: Ipv6Network = "ff01::0".parse().unwrap();
assert_eq!(net.mask(), Ipv6Addr::new(0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff));
let net: Ipv6Network = "ff01::0/32".parse().unwrap();
assert_eq!(net.mask(), Ipv6Addr::new(0xffff, 0xffff, 0, 0, 0, 0, 0, 0));
sourcepub fn contains(&self, ip: Ipv6Addr) -> bool
pub fn contains(&self, ip: Ipv6Addr) -> bool
Checks if a given Ipv6Addr
is in this Ipv6Network
Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let net: Ipv6Network = "ff01::0/32".parse().unwrap();
assert!(net.contains(Ipv6Addr::new(0xff01, 0, 0, 0, 0, 0, 0, 0x1)));
assert!(!net.contains(Ipv6Addr::new(0xffff, 0, 0, 0, 0, 0, 0, 0x1)));
sourcepub fn size(&self) -> u128
pub fn size(&self) -> u128
Returns number of possible host addresses in this Ipv6Network
.
Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let net: Ipv6Network = "ff01::0/32".parse().unwrap();
assert_eq!(net.size(), 79228162514264337593543950336);
let tinynet: Ipv6Network = "ff01::0/128".parse().unwrap();
assert_eq!(tinynet.size(), 1);
Trait Implementations§
source§impl Clone for Ipv6Network
impl Clone for Ipv6Network
source§fn clone(&self) -> Ipv6Network
fn clone(&self) -> Ipv6Network
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for Ipv6Network
impl Debug for Ipv6Network
source§impl<'de> Deserialize<'de> for Ipv6Network
impl<'de> Deserialize<'de> for Ipv6Network
source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where D: Deserializer<'de>,
source§impl Display for Ipv6Network
impl Display for Ipv6Network
source§impl From<Ipv6Addr> for Ipv6Network
impl From<Ipv6Addr> for Ipv6Network
source§fn from(a: Ipv6Addr) -> Ipv6Network
fn from(a: Ipv6Addr) -> Ipv6Network
source§impl From<Ipv6Network> for IpNetwork
impl From<Ipv6Network> for IpNetwork
source§fn from(v6: Ipv6Network) -> IpNetwork
fn from(v6: Ipv6Network) -> IpNetwork
source§impl FromStr for Ipv6Network
impl FromStr for Ipv6Network
Creates an Ipv6Network
from parsing a string in CIDR notation.
Examples
use std::net::Ipv6Addr;
use ipnetwork::Ipv6Network;
let new = Ipv6Network::new(Ipv6Addr::new(0xff01, 0, 0, 0x17, 0, 0, 0, 0x2), 65).unwrap();
let from_cidr: Ipv6Network = "FF01:0:0:17:0:0:0:2/65".parse().unwrap();
assert_eq!(new.ip(), from_cidr.ip());
assert_eq!(new.prefix(), from_cidr.prefix());
source§impl Hash for Ipv6Network
impl Hash for Ipv6Network
source§impl IntoIterator for &Ipv6Network
impl IntoIterator for &Ipv6Network
source§impl Ord for Ipv6Network
impl Ord for Ipv6Network
source§fn cmp(&self, other: &Ipv6Network) -> Ordering
fn cmp(&self, other: &Ipv6Network) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl PartialEq<Ipv6Network> for Ipv6Network
impl PartialEq<Ipv6Network> for Ipv6Network
source§fn eq(&self, other: &Ipv6Network) -> bool
fn eq(&self, other: &Ipv6Network) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd<Ipv6Network> for Ipv6Network
impl PartialOrd<Ipv6Network> for Ipv6Network
source§fn partial_cmp(&self, other: &Ipv6Network) -> Option<Ordering>
fn partial_cmp(&self, other: &Ipv6Network) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more