diff options
Diffstat (limited to 'matrix-lang/src/value/mod.rs')
-rw-r--r-- | matrix-lang/src/value/mod.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/matrix-lang/src/value/mod.rs b/matrix-lang/src/value/mod.rs new file mode 100644 index 0000000..9094bb6 --- /dev/null +++ b/matrix-lang/src/value/mod.rs @@ -0,0 +1,42 @@ +pub mod comp; +pub mod gc; +pub mod matrix; +pub mod hash; +pub mod exception; +pub mod function; +pub mod fmt; +pub mod index; +pub mod clone; + +use crate::prelude::*; + +#[derive(Clone)] +pub enum Value { + Nil, + + Bool(bool), + Int(i64), + Float(f64), + Ratio(Rational64), + Complex(Complex64), + + Regex(Rc<Regex>), + String(Rc<str>), + + List(Gc<Vec<Value>>), + Matrix(Gc<Matrix>), + Table(Gc<ValueMap>), + + Function(Rc<Function>), + Range(Rc<(i64, i64, bool)>), + Iter(Rc<Function>), + File(Rc<RefCell<File>>), + + Exception(Exception), +} + +impl From<&str> for Value { + fn from(value: &str) -> Self { + Value::String(Rc::from(value)) + } +} |