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}