diff --git a/src/terminal.rs b/src/terminal.rs new file mode 100644 index 0000000..f173fa4 --- /dev/null +++ b/src/terminal.rs @@ -0,0 +1,22 @@ +use crossterm::{ + ExecutableCommand, + terminal::{EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode}, +}; +use std::io::{self, stdout}; + +pub struct TerminalGuard; + +impl TerminalGuard { + pub fn new() -> Result { + enable_raw_mode()?; + stdout().execute(EnterAlternateScreen)?; + Ok(TerminalGuard) + } +} + +impl Drop for TerminalGuard { + fn drop(&mut self) { + let _ = disable_raw_mode(); + let _ = stdout().execute(LeaveAlternateScreen); + } +}