use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Serialize, Deserialize)]
#[repr(i32)]
pub enum ResourceCode {
Bandwidth = 0,
Energy = 1,
TronPower = 2,
}
impl ResourceCode {
pub const fn as_i32(self) -> i32 {
self as i32
}
pub const fn from_i32(value: i32) -> Option<Self> {
match value {
0 => Some(ResourceCode::Bandwidth),
1 => Some(ResourceCode::Energy),
2 => Some(ResourceCode::TronPower),
_ => None,
}
}
}
impl Default for ResourceCode {
fn default() -> Self {
ResourceCode::Energy
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn discriminants() {
assert_eq!(ResourceCode::Bandwidth.as_i32(), 0);
assert_eq!(ResourceCode::Energy.as_i32(), 1);
assert_eq!(ResourceCode::TronPower.as_i32(), 2);
assert_eq!(ResourceCode::from_i32(1), Some(ResourceCode::Energy));
assert_eq!(ResourceCode::from_i32(9), None);
assert_eq!(ResourceCode::default(), ResourceCode::Energy);
}
}