#[derive(Debug)]
pub enum Value {
Int(i64),
Float(f64),
String(String),
Bool(bool)
}
impl std::fmt::Display for Value {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Self::Int(v) => write!(f, "{}", v),
Self::Float(v) => write!(f, "{}", v),
Self::String(v) => write!(f, "{}", v),
Self::Bool(v) => write!(f, "{}", v),
}
}
}
impl From<i64> for Value {
fn from(value: i64) -> Value {
Value::Int(value)
}
}
impl From<f64> for Value {
fn from(value: f64) -> Value {
Value::Float(value)
}
}
impl From<String> for Value {
fn from(value: String) -> Value {
Value::String(value)
}
}
impl From<&str> for Value {
fn from(value: &str) -> Value {
Value::String(value.to_string())
}
}
impl From<bool> for Value {
fn from(value: bool) -> Value {
Value::Bool(value)
}
}