aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-01-21 09:30:14 +0100
committerGustav Sörnäs <gustav@sornas.net>2021-01-21 20:59:05 +0100
commit3acb060ee4a64d5da3521ec21cd0615ebf005e73 (patch)
treec899046ac22beee9bccd488ec9179edf6383766e
parent4448657f8443842e3ef75353c5fa87dfebb3cffd (diff)
downloadsylt-3acb060ee4a64d5da3521ec21cd0615ebf005e73.tar.gz
pop_twice move instead of clone
-rw-r--r--src/vm.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/vm.rs b/src/vm.rs
index c7b6c0f..772e5af 100644
--- a/src/vm.rs
+++ b/src/vm.rs
@@ -326,9 +326,13 @@ impl VM {
fn pop_twice(&mut self) -> (Value, Value) {
let len = self.stack.len();
- let res = (self.stack[len-2].clone(), self.stack[len-1].clone());
- self.stack.truncate(len - 2);
- res
+ // stack : { ... valueA valueB valueC }
+ // ^^^^^^
+ // remove len-2
+ // stack : { ... valueA valueC }
+ // ^^^^^^
+ // remove len-2 again
+ (self.stack.remove(len-2), self.stack.remove(len-2))
}
fn _peek_up(&self, amount: usize) -> Option<&Value> {