pub fn run(&mut self) -> Result<(), Box<dyn Error>> {
        ScreenHandler::setup()?;
        loop {
            self.render_display()?;
            let event = event::read()?;
            if !self.handle_input(&event)? {
                break;
            }
        }
        self.display.teardown()?;
        Ok(())
    }
A loop that repeatedly renders the terminal and modifies state based on input. Is stopped
when input handling receives CNTRLq, the command to stop.

# Errors

This errors when the UI fails to render.
src/app.rs