use core::fmt::{Debug, Formatter};
#[derive(Copy, Clone, PartialEq, Eq)]
pub enum FamilyOrBoth {
Both,
Single(Family),
}
impl Debug for FamilyOrBoth {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
FamilyOrBoth::Both => write!(f, "Both"),
FamilyOrBoth::Single(family) => family.fmt(f),
}
}
}
impl From<Family> for FamilyOrBoth {
fn from(family: Family) -> Self {
FamilyOrBoth::Single(family)
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum Family {
Ipv4,
Ipv6,
}
impl TryFrom<FamilyOrBoth> for Family {
type Error = ();
fn try_from(value: FamilyOrBoth) -> Result<Self, Self::Error> {
match value {
FamilyOrBoth::Both => Err(()),
FamilyOrBoth::Single(family) => Ok(family),
}
}
}