proxmox_api/types/
vmid.rs1use 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}