use std::fmt::Display;
use std::str::FromStr;
use serde::Deserialize;
use serde::Serialize;
#[derive(
Debug, Copy, Clone, Hash, Default, PartialEq, Eq, PartialOrd, Ord, Deserialize, Serialize,
)]
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
#[repr(transparent)]
#[serde(transparent)]
pub struct ProofIdx(u64);
impl ProofIdx {
pub fn zero() -> Self {
Self(0)
}
pub fn increment(&mut self) {
self.0 += 1;
}
}
impl Display for ProofIdx {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.0)
}
}
impl FromStr for ProofIdx {
type Err = <u64 as FromStr>::Err;
fn from_str(s: &str) -> Result<Self, Self::Err> {
u64::from_str(s).map(ProofIdx)
}
}