diff options
Diffstat (limited to 'src/forth/vm.rs')
| -rw-r--r-- | src/forth/vm.rs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/forth/vm.rs b/src/forth/vm.rs index 25ed516..6bab8b9 100644 --- a/src/forth/vm.rs +++ b/src/forth/vm.rs @@ -126,7 +126,7 @@ pub struct VM { pub wordlist: WordList, pub ip: InstructionPointer, - pub out: Vec<String>, + pub out: Option<DataStackType>, pub heading: DataStackType, pub speed: DataStackType, pub doppler: DataStackType, @@ -153,7 +153,7 @@ impl VM { ip: InstructionPointer::new(), wordlist, - out: vec![], + out: None, heading: 0, speed: 0, doppler: 0, @@ -313,7 +313,7 @@ impl VM { } OpCode::Say => { let v = self.stack.0.pop().ok_or(RuntimeError::StackUnderflow)?; - self.out.push(format!("{}", v)); + let _ = self.out.insert(v); } OpCode::Heading => { self.stack.0.push(self.heading); @@ -829,8 +829,7 @@ mod tests { let mut vm = VM::new(wordlist); vm.run().expect("should run to completion"); assert_eq!(vm.stack.0.len(), 0, "empty stack"); - assert_eq!(vm.out.len(), 1, "output length"); - assert_eq!(vm.out[0], "-1", "output value"); + assert_eq!(vm.out.expect("output is set"), -1, "output value"); } #[test] |
