Struct bdrck::net::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.

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 copy 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

§

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<IpNet> for IpNet

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method 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 StructuralEq for IpNet

source§

impl StructuralPartialEq for IpNet

Auto Trait Implementations§

§

impl RefUnwindSafe for IpNet

§

impl Send for IpNet

§

impl Sync for IpNet

§

impl Unpin for IpNet

§

impl UnwindSafe for IpNet

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Q, K> Equivalent<K> for Qwhere 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 Twhere 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> ToOwned for Twhere T: Clone,

§

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 Twhere T: Display + ?Sized,

source§

default fn to_string(&self) -> String

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

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

§

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 Twhere U: TryFrom<T>,

§

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.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

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 Twhere T: for<'de> Deserialize<'de>,