set_panic_hook (#67)
This commit is contained in:
parent
e95ecb9e9c
commit
843c4d019d
@ -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);
|
||||
}));
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user