ip/concrete/mask/private.rs
1use core::marker::PhantomData;
2
3use super::Type;
4use crate::traits::Afi;
5
6/// An IP mask of address family `A`.
7#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)]
8pub struct Mask<T: Type, A: Afi>(A::Primitive, PhantomData<T>);
9
10impl<A: Afi, T: Type> Mask<T, A> {
11 /// Construct a new [`Mask<T, A>`] from an integer primitive appropriate to
12 /// `A`.
13 pub const fn new(bits: A::Primitive) -> Self {
14 Self(bits, PhantomData)
15 }
16
17 /// Get the primitive integer value, consuming `self`.
18 pub const fn into_primitive(self) -> A::Primitive {
19 self.0
20 }
21}