use {crossterm::terminal::*, std::io::*};
pub struct RawMode {
was_raw: bool,
}
impl RawMode {
pub fn new() -> Result<Self> {
let was_raw = is_raw_mode_enabled()?;
if !was_raw {
enable_raw_mode()?;
}
Ok(Self { was_raw })
}
}
impl Drop for RawMode {
fn drop(&mut self) {
if !self.was_raw {
_ = disable_raw_mode();
}
}
}