Skip to main content

hotmint_types/
view.rs

1use serde::{Deserialize, Serialize};
2use std::fmt;
3
4#[derive(
5    Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, Default,
6)]
7pub struct ViewNumber(pub u64);
8
9impl ViewNumber {
10    pub const GENESIS: Self = Self(0);
11
12    pub fn next(self) -> Self {
13        Self(self.0.checked_add(1).expect("view number overflow"))
14    }
15
16    pub fn as_u64(self) -> u64 {
17        self.0
18    }
19}
20
21impl fmt::Display for ViewNumber {
22    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
23        write!(f, "v{}", self.0)
24    }
25}
26
27impl From<u64> for ViewNumber {
28    fn from(v: u64) -> Self {
29        Self(v)
30    }
31}