ockam_core/
uint.rs

1use serde::{Deserialize, Deserializer, Serialize, Serializer};
2
3/// Unsigned integer implementation that supports serde_bare
4/// serialization as a 64 bit `uint` type.
5///
6/// This is to avoid cross-platform and cross-language compatibility
7/// inconsistencies that may be encountered by using Rust fixed-size
8/// integers.
9#[derive(Debug, PartialEq, Eq)]
10pub struct Uint(serde_bare::Uint);
11
12impl Uint {
13    /// Return the underlying integer.
14    pub fn u64(&self) -> u64 {
15        self.0 .0
16    }
17}
18
19impl Serialize for Uint {
20    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
21    where
22        S: Serializer,
23    {
24        self.0.serialize(serializer)
25    }
26}
27
28impl<'de> Deserialize<'de> for Uint {
29    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
30    where
31        D: Deserializer<'de>,
32    {
33        let u = serde_bare::Uint::deserialize(deserializer)?;
34        Ok(Self(u))
35    }
36}
37
38impl From<u64> for Uint {
39    fn from(u: u64) -> Self {
40        Self(serde_bare::Uint(u))
41    }
42}