js_randomness_predictor/
nodejs_major_version.rs

1use clap::ValueEnum;
2use std::fmt::{Display, Formatter, Result};
3
4#[derive(Clone, Copy, Debug, ValueEnum)]
5pub enum NodeJsMajorVersion {
6  V0 = 0,
7  V4 = 4,
8  V5 = 5,
9  V6 = 6,
10  V7 = 7,
11  V8 = 8,
12  V9 = 9,
13  V10 = 10,
14  V11 = 11,
15  V12 = 12,
16  V13 = 13,
17  V14 = 14,
18  V15 = 15,
19  V16 = 16,
20  V17 = 17,
21  V18 = 18,
22  V19 = 19,
23  V20 = 20,
24  V21 = 21,
25  V22 = 22,
26  V23 = 23,
27  V24 = 24,
28}
29
30impl NodeJsMajorVersion {
31  #[allow(dead_code, clippy::implicit_return)]
32  pub fn from_u8(value: u8) -> Option<Self> {
33    match value {
34      0 => Some(Self::V0),
35      4 => Some(Self::V4),
36      5 => Some(Self::V5),
37      6 => Some(Self::V6),
38      7 => Some(Self::V7),
39      8 => Some(Self::V8),
40      9 => Some(Self::V9),
41      10 => Some(Self::V10),
42      11 => Some(Self::V11),
43      12 => Some(Self::V12),
44      13 => Some(Self::V13),
45      14 => Some(Self::V14),
46      15 => Some(Self::V15),
47      16 => Some(Self::V16),
48      17 => Some(Self::V17),
49      18 => Some(Self::V18),
50      19 => Some(Self::V19),
51      20 => Some(Self::V20),
52      21 => Some(Self::V21),
53      22 => Some(Self::V22),
54      23 => Some(Self::V23),
55      24 => Some(Self::V24),
56      _ => None,
57    }
58  }
59}
60
61impl Display for NodeJsMajorVersion {
62  fn fmt(&self, f: &mut Formatter<'_>) -> Result {
63    return write!(f, "v{}", *self as u8);
64  }
65}