Skip to main content

proxmox_api/types/
vmid.rs

1use super::bounded_integer;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
4pub struct VmId(i128);
5
6impl bounded_integer::BoundedInteger for VmId {
7    const MIN: Option<i128> = Some(100);
8    const MAX: Option<i128> = Some(999_999_999);
9    const DEFAULT: Option<i128> = None;
10    const TYPE_DESCRIPTION: &'static str = "an integer between 100 and 999_999_999";
11
12    fn get(&self) -> i128 {
13        self.0
14    }
15
16    fn new(value: i128) -> Result<Self, bounded_integer::BoundedIntegerError> {
17        Self::validate(value)?;
18        Ok(Self(value))
19    }
20}
21
22impl std::convert::TryFrom<i128> for VmId {
23    type Error = bounded_integer::BoundedIntegerError;
24
25    fn try_from(value: i128) -> Result<Self, Self::Error> {
26        bounded_integer::BoundedInteger::new(value)
27    }
28}
29
30impl ::serde::Serialize for VmId {
31    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
32    where
33        S: ::serde::Serializer,
34    {
35        bounded_integer::serialize_bounded_integer(self, serializer)
36    }
37}
38
39impl<'de> ::serde::Deserialize<'de> for VmId {
40    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
41    where
42        D: ::serde::Deserializer<'de>,
43    {
44        bounded_integer::deserialize_bounded_integer(deserializer)
45    }
46}
47impl std::fmt::Display for VmId {
48    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
49        write!(f, "{}", self.0)
50    }
51}