-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathattribute.rs
44 lines (33 loc) · 1.27 KB
/
attribute.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#![allow(clippy::cognitive_complexity)]
use std::{io::Write, thread, time::Duration};
use terminal::{error::Result, stdout, Action, Attribute, TerminalLock};
const ATTRIBUTES: [(Attribute, Attribute); 7] = [
(Attribute::Bold, Attribute::BoldOff),
(Attribute::Italic, Attribute::ItalicOff),
(Attribute::Underlined, Attribute::UnderlinedOff),
(Attribute::Reversed, Attribute::ReversedOff),
(Attribute::Crossed, Attribute::CrossedOff),
(Attribute::SlowBlink, Attribute::BlinkOff),
(Attribute::Conceal, Attribute::ConcealOff),
];
fn display_attributes<W: Write>(w: &mut TerminalLock<W>) -> Result<()> {
let mut y = 2;
w.write(b"Display attributes");
for (on, off) in &ATTRIBUTES {
w.act(Action::MoveCursorTo(0, y));
w.batch(Action::SetAttribute(*on));
w.write(format!("{:>width$} ", format!("{:?}", on), width = 35).as_bytes());
w.batch(Action::SetAttribute(*off));
w.write(format!("{:>width$}", format!("{:?}", off), width = 35).as_bytes());
w.batch(Action::ResetColor);
w.flush_batch();
y += 1;
}
Ok(())
}
pub fn main() {
let stdout = stdout();
let mut lock = stdout.lock_mut().unwrap();
display_attributes(&mut lock);
thread::sleep(Duration::from_millis(5000))
}