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());
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.