console_utilities/
cursor.rs

1use crate::console::flush_console;
2
3pub struct Visibility;
4
5impl Visibility {
6    pub fn show_cursor() {
7        print!("\x1B[?25h");
8        flush_console();
9    }
10
11    pub fn hide_cursor() {
12        print!("\x1B[?25l");
13        flush_console();
14    }
15}
16
17pub struct Move;
18
19impl Move {
20    pub fn cursor_up(num: i32) {
21        if num > 0 {
22            print!("\x1b[{}A", num);
23            flush_console();
24        }
25    }
26
27    pub fn cursor_down(num: i32) {
28        if num > 0 {
29            print!("\x1b[{}B", num);
30            flush_console();
31        }
32    }
33
34    pub fn cursor_left(num: i32) {
35        if num > 0 {
36            print!("\x1b[{}D", num);
37            flush_console();
38        }
39    }
40
41    pub fn cursor_right(num: i32) {
42        if num > 0 {
43            print!("\x1b[{}C", num);
44            flush_console();
45        }
46    }
47}