ip/traits/
mask.rs

1use core::fmt::Debug;
2use core::hash::Hash;
3
4/// Address-family independent interface for IP masks.
5///
6/// Methods on `Mask` types that are well defined for all address-families
7/// are implemented via this trait.
8///
9/// See also [`concrete::Mask<T, A>`][crate::concrete::Mask] and
10/// [`any::Mask<T>`][crate::any::Mask] for address-family specific items.
11pub trait Mask: Clone + Copy + Debug + Hash + PartialEq + Eq {}
12
13/// Address-family independent interface for IP netmasks.
14///
15/// Methods on `Netmask` types that are well defined for all address-families
16/// are implemented via this trait.
17///
18/// See also [`concrete::Netmask<A>`][crate::concrete::Netmask] and
19/// [`any::Netmask`][crate::any::Netmask] for address-family specific items.
20pub trait Netmask: Mask {}
21
22/// Address-family independent interface for IP hostmasks.
23///
24/// Methods on `Hostmask` types that are well defined for all address-families
25/// are implemented via this trait.
26///
27/// See also [`concrete::Hostmask<A>`][crate::concrete::Hostmask] and
28/// [`any::Hostmask`][crate::any::Hostmask] for address-family specific items.
29pub trait Hostmask: Mask {}
30
31/// Address-family independent interface for IP bitmasks.
32///
33/// Methods on `Bitmask` types that are well defined for all address-families
34/// are implemented via this trait.
35///
36/// See also [`concrete::Bitmask<A>`][crate::concrete::Bitmask] and
37/// [`any::Bitmask`][crate::any::Bitmask] for address-family specific items.
38pub trait Bitmask: Mask {}