#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
#[non_exhaustive] pub enum Number {
I8(i8),
U8(u8),
I16(i16),
U16(u16),
I32(i32),
U32(u32),
F32(f32),
I64(i64),
U64(u64),
F64(f64),
I128(i128),
U128(u128),
}
impl From<i8> for Number {
fn from(value: i8) -> Self {
Self::I8(value)
}
}
impl From<u8> for Number {
fn from(value: u8) -> Self {
Self::U8(value)
}
}
impl From<i16> for Number {
fn from(value: i16) -> Self {
Self::I16(value)
}
}
impl From<u16> for Number {
fn from(value: u16) -> Self {
Self::U16(value)
}
}
impl From<i32> for Number {
fn from(value: i32) -> Self {
Self::I32(value)
}
}
impl From<u32> for Number {
fn from(value: u32) -> Self {
Self::U32(value)
}
}
impl From<f32> for Number {
fn from(value: f32) -> Self {
Self::F32(value)
}
}
impl From<i64> for Number {
fn from(value: i64) -> Self {
Self::I64(value)
}
}
impl From<u64> for Number {
fn from(value: u64) -> Self {
Self::U64(value)
}
}
impl From<f64> for Number {
fn from(value: f64) -> Self {
Self::F64(value)
}
}
impl From<i128> for Number {
fn from(value: i128) -> Self {
Self::I128(value)
}
}
impl From<u128> for Number {
fn from(value: u128) -> Self {
Self::U128(value)
}
}