#[derive(Debug, Clone, PartialEq)]
pub enum ValueType {
Number,
Series,
Bool,
String,
}
#[derive(Debug, Clone, PartialEq)]
pub enum PrimitiveKind {
Compute,
}
#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
pub enum Value {
Number(f64),
Series(Vec<f64>),
Bool(bool),
String(String),
}
impl Value {
pub fn value_type(&self) -> ValueType {
match self {
Value::Number(_) => ValueType::Number,
Value::Series(_) => ValueType::Series,
Value::Bool(_) => ValueType::Bool,
Value::String(_) => ValueType::String,
}
}
pub fn as_number(&self) -> Option<f64> {
match self {
Value::Number(n) => Some(*n),
_ => None,
}
}
pub fn as_series(&self) -> Option<&Vec<f64>> {
match self {
Value::Series(s) => Some(s),
_ => None,
}
}
pub fn as_bool(&self) -> Option<bool> {
match self {
Value::Bool(b) => Some(*b),
_ => None,
}
}
pub fn as_string(&self) -> Option<&str> {
match self {
Value::String(s) => Some(s),
_ => None,
}
}
}