Skip to main content

IpNet

Struct IpNet 

Source
pub struct IpNet { /* private fields */ }
Expand description

An IpNet represents an IP network. Networks are typically identified in CIDR notation, like (for example) “192.0.0.0/24”.

Implementations§

Source§

impl IpNet

Source

pub fn get_ip(&self) -> IpAddr

Return the network IP. This address will have been normalized, such that any non-masked bits will have been turned off during construction.

Source

pub fn get_mask(&self) -> &[u8]

Return the network mask, as a byte slice. This slice will always be 16 bytes long, even if this is an IPv4 network.

Source

pub fn apply_mask(&self, ip: IpAddr, invert: bool, set: bool) -> IpAddr

Apply this network’s mask to the given IP address, returning the modified copy.

The “default” behavior is when invert=false and set=false. In this case, any bits which are “0” in the mask are turned off in the given IP address’ bytes.

If invert=true, then each bit in the mask is flipped before it is applied - in other words, we apply the inverse mask.

If set=true, then we switch from bitwise AND to bitwise OR, meaning instead of the behavior described above, any bits which are “1” in the mask are turned on in the IP address, and other bits are left unchanged.

Source

pub fn get_one_bits(&self) -> usize

Returns the number of “1” bits in this network’s mask. Although the mask is always 16 bytes long, for IPv4 networks only the last 4 bytes of the mask are considered.

Source

pub fn is_canonical(&self) -> bool

Returns whether or not this network’s mask is “canonical” - i.e., if all of its mask’s “1” bits are contiguous (no “0” bits in-between them).

Source

pub fn netmask(&self) -> IpAddr

Return the netmask IP address for this network.

Source

pub fn broadcast(&self) -> IpAddr

Return the broadcast IP address for this network.

Source

pub fn contains(&self, ip: IpAddr, strict: bool) -> bool

Return whether or not the given IP address is contained within this network. If strict=true, then the “network address” and “broadcast address” are both not considered to be “within” this network (this is useful if you want to check if the given IP address is actually usable for a host on the network).

Source

pub fn increment_in(&self, ip: IpAddr, strict: bool) -> Option<IpAddr>

Increment the given IP address as if with increment_ip(), but returning None if the resulting IP address does not lie within this network. The “strict” parameter behaves as IpNet::contains() describes.

Source

pub fn first(&self) -> Option<IpAddr>

Return the first IP address which falls within this network.

For networks with no distinct network address (/32 for IPv4 and /128 for IPv6, which contain only a single host; and /31 for IPv4 and /127 for IPv6, where per RFC 3021 / RFC 6164 both addresses are usable), self.ip is returned. Otherwise the network address is skipped and self.ip + 1 is returned.

Source

pub fn last(&self) -> IpAddr

Return the last non-broadcast IP address which falls within this network.

Trait Implementations§

Source§

impl Clone for IpNet

Source§

fn clone(&self) -> IpNet

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for IpNet

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for IpNet

Source§

fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for IpNet

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FromStr for IpNet

Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for IpNet

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for IpNet

Source§

fn eq(&self, other: &IpNet) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for IpNet

Source§

fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for IpNet

Source§

impl Eq for IpNet

Source§

impl StructuralPartialEq for IpNet

Auto Trait Implementations§

§

impl Freeze for IpNet

§

impl RefUnwindSafe for IpNet

§

impl Send for IpNet

§

impl Sync for IpNet

§

impl Unpin for IpNet

§

impl UnsafeUnpin for IpNet

§

impl UnwindSafe for IpNet

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,