mod cidr;
mod cidr_v4;
mod cidr_v6;
mod ip_address;
mod ipv4_address;
mod ipv6_address;
mod mac_address;
mod prefix;
pub use self::cidr::Cidr;
pub use self::cidr_v4::CIDRv4;
pub use self::cidr_v6::CIDRv6;
pub use self::ip_address::IpAddress;
pub use self::ipv4_address::IPv4Address;
pub use self::ipv6_address::IPv6Address;
pub use self::mac_address::MACAddress;
pub use self::prefix::Prefix;
use crate::error::Error;
use crate::platform;
use crate::platform::ffi;
use std::cmp::Ordering;
fn boolean(outcome: ffi::CzOutcome, action: &str) -> Result<bool, Error> {
platform::outcome(outcome, action).map(|outcome| outcome.boolean())
}
fn description(outcome: ffi::CzOutcome, action: &str) -> Result<String, Error> {
platform::outcome(outcome, action).map(|outcome| outcome.text())
}
fn ordering<T: PartialEq>(lhs: &T, rhs: &T, less: impl Fn(&T, &T) -> Result<bool, Error>) -> Option<Ordering> {
if less(lhs, rhs).ok()? {
Some(Ordering::Less)
} else if less(rhs, lhs).ok()? {
Some(Ordering::Greater)
} else if lhs == rhs {
Some(Ordering::Equal)
} else {
None
}
}