proxmox-api 0.2.0

Rust bindings for the Proxmox VE HTTP API
Documentation
use super::bounded_integer;

#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct VmId(i128);

impl bounded_integer::BoundedInteger for VmId {
    const MIN: Option<i128> = Some(100);
    const MAX: Option<i128> = Some(999_999_999);
    const DEFAULT: Option<i128> = None;
    const TYPE_DESCRIPTION: &'static str = "an integer between 100 and 999_999_999";

    fn get(&self) -> i128 {
        self.0
    }

    fn new(value: i128) -> Result<Self, bounded_integer::BoundedIntegerError> {
        Self::validate(value)?;
        Ok(Self(value))
    }
}

impl std::convert::TryFrom<i128> for VmId {
    type Error = bounded_integer::BoundedIntegerError;

    fn try_from(value: i128) -> Result<Self, Self::Error> {
        bounded_integer::BoundedInteger::new(value)
    }
}

impl ::serde::Serialize for VmId {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: ::serde::Serializer,
    {
        bounded_integer::serialize_bounded_integer(self, serializer)
    }
}

impl<'de> ::serde::Deserialize<'de> for VmId {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where
        D: ::serde::Deserializer<'de>,
    {
        bounded_integer::deserialize_bounded_integer(deserializer)
    }
}
impl std::fmt::Display for VmId {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", self.0)
    }
}