use std::fmt;
#[derive(Debug, PartialEq, Clone, Copy)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Cursor {
Home,
Pos(usize, usize),
Up(usize),
Down(usize),
Right(usize),
Left(usize),
NextBeg(usize),
PrevBeg(usize),
Col(usize),
}
impl fmt::Display for Cursor {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Cursor::Home => write!(f, "\x1b[H"),
Cursor::Pos(x, y) => write!(f, "\x1b[{y};{x}H"),
Cursor::Up(n) => write!(f, "\x1b[{n}A"),
Cursor::Down(n) => write!(f, "\x1b[{n}B"),
Cursor::Right(n) => write!(f, "\x1b[{n}C"),
Cursor::Left(n) => write!(f, "\x1b[{n}D"),
Cursor::NextBeg(n) => write!(f, "\x1b[{n}E"),
Cursor::PrevBeg(n) => write!(f, "\x1b[{n}F"),
Cursor::Col(n) => write!(f, "\x1b[{n}G"),
}
}
}