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> {
|
pub fn setup() -> Result<Terminal> {
|
||||||
let mut stdout = std::io::stdout();
|
let mut stdout = std::io::stdout();
|
||||||
crossterm::terminal::enable_raw_mode()?;
|
crossterm::terminal::enable_raw_mode()?;
|
||||||
|
set_panic_hook();
|
||||||
execute!(stdout, EnterAlternateScreen, cursor::Hide)?;
|
execute!(stdout, EnterAlternateScreen, cursor::Hide)?;
|
||||||
let mut terminal = RatatuiTerminal::new(CrosstermBackend::new(stdout))?;
|
let mut terminal = RatatuiTerminal::new(CrosstermBackend::new(stdout))?;
|
||||||
terminal.clear()?;
|
terminal.clear()?;
|
||||||
@ -24,3 +25,13 @@ pub fn teardown() -> Result<()> {
|
|||||||
crossterm::terminal::disable_raw_mode()?;
|
crossterm::terminal::disable_raw_mode()?;
|
||||||
Ok(())
|
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