set_panic_hook (#67)

This commit is contained in:
Jens Krause 2025-02-06 11:16:04 +01:00 committed by GitHub
parent e95ecb9e9c
commit 843c4d019d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -12,6 +12,7 @@ pub type Terminal = RatatuiTerminal<CrosstermBackend<io::Stdout>>;
pub fn setup() -> Result<Terminal> {
let mut stdout = std::io::stdout();
crossterm::terminal::enable_raw_mode()?;
set_panic_hook();
execute!(stdout, EnterAlternateScreen, cursor::Hide)?;
let mut terminal = RatatuiTerminal::new(CrosstermBackend::new(stdout))?;
terminal.clear()?;
@ -24,3 +25,13 @@ pub fn teardown() -> Result<()> {
crossterm::terminal::disable_raw_mode()?;
Ok(())
}
// Panic hook
// see https://ratatui.rs/tutorials/counter-app/error-handling/#setup-hooks
fn set_panic_hook() {
let hook = std::panic::take_hook();
std::panic::set_hook(Box::new(move |panic_info| {
let _ = teardown(); // ignore any errors as we are already failing
hook(panic_info);
}));
}