diff options
| -rw-r--r-- | src/main.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index fc657a8..89c47aa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -43,15 +43,13 @@ impl Calculator { self.input_buffer.push(c); } else if let Ok(op) = Operator::parse(c) { if self.input_buffer.len() > 0 { - self.stack.push(self.input_buffer.parse::<f64>().unwrap()); - self.input_buffer = String::new(); + self.push_buffer_to_stack(); } self.perform_operation(op); } } KeyCode::Enter if self.input_buffer.len() > 0 => { - self.stack.push(self.input_buffer.parse::<f64>().unwrap()); - self.input_buffer = String::new(); + self.push_buffer_to_stack(); } KeyCode::Backspace => { self.input_buffer.pop(); @@ -105,6 +103,11 @@ impl Calculator { Operator::Div => self.stack.push(lhs / rhs), } } + + fn push_buffer_to_stack(&mut self) { + self.stack.push(self.input_buffer.parse::<f64>().unwrap()); + self.input_buffer = String::new(); + } } fn main() -> io::Result<()> { |