Trait ip::traits::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§
sourcefn increment(self) -> Result<Self, Error>
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());