refactor: move terminal guard to own file
This commit is contained in:
29
src/terminal_guard.rs
Normal file
29
src/terminal_guard.rs
Normal file
@@ -0,0 +1,29 @@
|
||||
use crossterm::cursor::Show;
|
||||
use crossterm::execute;
|
||||
use crossterm::terminal::{LeaveAlternateScreen, disable_raw_mode};
|
||||
|
||||
pub struct TerminalModeGuard {
|
||||
active: bool,
|
||||
}
|
||||
|
||||
impl TerminalModeGuard {
|
||||
pub fn new() -> Self {
|
||||
Self { active: true }
|
||||
}
|
||||
|
||||
pub fn cleanup(&mut self) {
|
||||
if !self.active {
|
||||
return;
|
||||
}
|
||||
let _ = disable_raw_mode();
|
||||
let mut stdout = std::io::stdout();
|
||||
let _ = execute!(stdout, LeaveAlternateScreen, Show);
|
||||
self.active = false;
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for TerminalModeGuard {
|
||||
fn drop(&mut self) {
|
||||
self.cleanup();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user