From 06d8a6fa8a8f0411a6a6cdd711f2facc673b4f7f Mon Sep 17 00:00:00 2001 From: Stevan Freeborn Date: Tue, 28 Jul 2026 09:32:43 -0500 Subject: [PATCH] refactor: extract terminal guard --- src/terminal.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/terminal.rs 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); + } +}