use std::io::Write; #[derive(Debug, Clone, Copy)] pub enum Direction { Up, Down, Left, Right, } pub fn move_cursor(direction: Direction, n: usize) { if n == 0 { return; } let code = match direction { Direction::Up => 'A', Direction::Down => 'B', Direction::Right => 'C', Direction::Left => 'D', }; print!("\x1b[{n}{code}"); } pub fn save() { std::io::stdout().lock().write_all(b"\x1b[s").unwrap(); } pub fn restore() { std::io::stdout().lock().write_all(b"\x1b[u").unwrap(); } /// Represents a cursor position #[derive(Debug, Clone, Copy)] pub struct CursorPos { pub row: usize, pub col: usize, }