#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(Deserialize, Serialize)]
#[serde(deny_unknown_fields, default)]
pub struct PrivateEnterpriseNumber
{
pub private_enterprise_number: u32,
pub sub_domain: ArrayVec<u32, 4>
}
impl Display for PrivateEnterpriseNumber
{
#[inline(always)]
fn fmt(&self, f: &mut Formatter) -> fmt::Result
{
write!(f, "{}", self.to_string())
}
}
impl Default for PrivateEnterpriseNumber
{
#[inline(always)]
fn default() -> Self
{
Self::Reserved()
}
}
impl PrivateEnterpriseNumber
{
#[inline(always)]
pub fn Reserved() -> Self
{
Self
{
private_enterprise_number: 0,
sub_domain: ArrayVec::new(),
}
}
const Prefix: &'static str = "1.3.6.1.4.1.";
#[inline(always)]
fn to_string(&self) -> String
{
let mut number_string = Self::Prefix.to_string();
number_string.push_str(&format!("{}", self.private_enterprise_number));
for sub_domain_private_enterprise_number in self.sub_domain.iter()
{
number_string.push('.');
number_string.push_str(&format!("{}", sub_domain_private_enterprise_number));
}
number_string
}
}