diff --git a/src/vm/value.rs b/src/vm/value.rs index 6fb6bbd..5eb65ad 100644 --- a/src/vm/value.rs +++ b/src/vm/value.rs @@ -125,7 +125,8 @@ impl Debug for Constant { } } -pub type Table = Rc>>; +pub type Table = Rc>; +pub type TableMap = HashMap; #[derive(Clone)] pub enum Value { @@ -151,7 +152,7 @@ impl Value { } Value::Function(closure) => Ok(IndexableValue::Function(closure.prototype)), Value::Nil => Err(RuntimeError::InvalidTableIndex(self)), - Value::Table { .. } => Err(RuntimeError::InvalidTableIndex(self)), + Value::Table { contents, .. } => Ok(IndexableValue::Table(contents.as_ptr())), } } @@ -621,6 +622,7 @@ pub enum IndexableValue { Bool(LuaBool), RustFunction(String), Function(u32), + Table(*mut TableMap), } impl From<&str> for IndexableValue {