Trait PrefixLength

Source
pub trait PrefixLength:
    Copy
    + Clone
    + Debug
    + Display
    + Hash
    + PartialEq
    + Eq
    + PartialOrd
    + 'static {
    // Required methods
    fn increment(self) -> Result<Self, Error>;
    fn decrement(self) -> Result<Self, Error>;
}
Expand description

Address-family independent interface for IP prefix-lengths

See also concrete::PrefixLength<A> and any::PrefixLength for address-family specific items.

Required Methods§

Source

fn increment(self) -> Result<Self, Error>

Returns a new Self that is one greater than self unless self is already the maximum possible value.

§Errors

An Error of kind Kind::PrefixLength is returned if self is maximally-valued.

§Examples
use ip::{
    traits::{Prefix as _, PrefixLength as _},
    Ipv4, Ipv6, Prefix, PrefixLength,
};

let ipv4_default: Prefix<Ipv4> = "0.0.0.0/0".parse()?;
let ipv6_host: Prefix<Ipv6> = "2001:db8::1/128".parse()?;

assert_eq!(
    ipv4_default.prefix_len().increment()?,
    PrefixLength::<Ipv4>::from_primitive(1)?,
);
assert!(ipv4_default.prefix_len().decrement().is_err());
assert_eq!(
    ipv6_host.prefix_len().decrement()?,
    PrefixLength::<Ipv6>::from_primitive(127)?,
);
assert!(ipv6_host.prefix_len().increment().is_err());
Source

fn decrement(self) -> Result<Self, Error>

Returns a new Self that is one less than self unless self is already the minimum possible value.

§Errors

An Error of kind Kind::PrefixLength is returned if self is zero-valued.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§