Skip to main content

toasty_core/stmt/
value_net.rs

1use crate::stmt::Value;
2
3macro_rules! impl_net_conversions {
4    ($ty:ty, $name:ident, $lit:literal) => {
5        impl From<$ty> for Value {
6            fn from(value: $ty) -> Self {
7                Self::$name(value)
8            }
9        }
10
11        impl TryFrom<Value> for $ty {
12            type Error = crate::Error;
13
14            fn try_from(value: Value) -> Result<Self, Self::Error> {
15                match value {
16                    Value::$name(value) => Ok(value),
17                    _ => Err(crate::Error::type_conversion(value, $lit)),
18                }
19            }
20        }
21    };
22}
23
24impl_net_conversions!(cidr::IpCidr, Cidr, "cidr::IpCidr");
25impl_net_conversions!(cidr::IpInet, Inet, "cidr::IpInet");
26impl_net_conversions!(macaddr::MacAddr6, MacAddr, "macaddr::MacAddr6");
27impl_net_conversions!(macaddr::MacAddr8, MacAddr8, "macaddr::MacAddr8");