diff options
| -rw-r--r-- | src/input.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/input.rs b/src/input.rs index 21edef7..59bf5b9 100644 --- a/src/input.rs +++ b/src/input.rs @@ -53,7 +53,9 @@ impl Calculator { } self.input_buffer.push(c); } else if let Ok(op) = Operator::parse(c) { - self.stack.push(self.input_buffer.parse::<f64>().unwrap()); + if self.input_buffer.len() > 0 { + self.stack.push(self.input_buffer.parse::<f64>().unwrap()); + } self.input_buffer = String::new(); self.perform_operation(op); } else { @@ -65,7 +67,9 @@ impl Calculator { // is empty, this simply pops from the stack into the input buffer. fn swap(&mut self) { if let Some(f) = self.stack.pop() { - self.stack.push(self.input_buffer.parse::<f64>().unwrap()); + if self.input_buffer.len() > 0 { + self.stack.push(self.input_buffer.parse::<f64>().unwrap()); + } self.input_buffer = format!("{}", f); } } |