aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
blob: 85e38882f839d3ef8f6ad4c48c41cbd4c2e6fb72 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use crossterm::event::{self, Event};
use std::io;

use pfc::{ui, Calculator, Signal};

fn main() -> io::Result<()> {
    let mut terminal = ui::init_terminal()?;
    let mut calculator = Calculator::default();

    let result = || -> io::Result<()> {
        loop {
            terminal.draw(|f| calculator.draw(f))?;

            if let Event::Key(key) = event::read()? {
                if let Signal::Exit = calculator.handle_input(key) {
                    return Ok(());
                }
            }
        }
    }();

    ui::cleanup_terminal(terminal)?;
    result
}