use std::fmt::Display;
use fvm_ipld_encoding::repr::Serialize_repr;
#[derive(Debug, Eq, PartialEq, Clone, Copy, Ord, PartialOrd, Serialize_repr)]
#[repr(u32)]
#[non_exhaustive]
pub enum NetworkVersion {
V0 = 0,
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
V12,
V13,
V14,
V15,
V16,
V17,
}
impl Display for NetworkVersion {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", *self as u32)
}
}
impl TryFrom<u32> for NetworkVersion {
type Error = u32;
fn try_from(value: u32) -> Result<Self, Self::Error> {
use NetworkVersion::*;
match value {
0 => Ok(V0),
1 => Ok(V1),
2 => Ok(V2),
3 => Ok(V3),
4 => Ok(V4),
5 => Ok(V5),
6 => Ok(V6),
7 => Ok(V7),
8 => Ok(V8),
9 => Ok(V9),
10 => Ok(V10),
11 => Ok(V11),
12 => Ok(V12),
13 => Ok(V13),
14 => Ok(V14),
15 => Ok(V15),
16 => Ok(V16),
17 => Ok(V17),
_ => Err(value),
}
}
}