Skip to main content

floria_plugin_sdk/data/math/number/
number.rs

1use std::fmt;
2
3//
4// Number
5//
6
7/// Number.
8#[derive(Clone, Copy, Debug)]
9pub enum Number {
10    /// Integer.
11    Integer(i64),
12
13    /// Unsigned integer.
14    UnsignedInteger(u64),
15
16    /// Float.
17    Float(f64),
18}
19
20impl Number {
21    /// Type name.
22    pub fn type_name(&self) -> &'static str {
23        match self {
24            Self::Integer(_) => "integer",
25            Self::UnsignedInteger(_) => "unsigned integer",
26            Self::Float(_) => "float",
27        }
28    }
29}
30
31impl Default for Number {
32    fn default() -> Self {
33        Self::Integer(0)
34    }
35}
36
37impl fmt::Display for Number {
38    fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
39        match self {
40            Self::Integer(integer) => fmt::Display::fmt(integer, formatter),
41            Self::UnsignedInteger(unsigned_integer) => fmt::Display::fmt(unsigned_integer, formatter),
42            Self::Float(float) => fmt::Display::fmt(float, formatter),
43        }
44    }
45}