termion/
macros.rs
1macro_rules! csi {
3 ($( $l:expr ),*) => { concat!("\x1B[", $( $l ),*) };
4}
5
6macro_rules! derive_csi_sequence {
8 ($doc:expr, $name:ident, $value:expr) => {
9 #[doc = $doc]
10 #[derive(Copy, Clone)]
11 pub struct $name;
12
13 impl fmt::Display for $name {
14 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15 write!(f, csi!($value))
16 }
17 }
18
19 impl AsRef<[u8]> for $name {
20 fn as_ref(&self) -> &'static [u8] { csi!($value).as_bytes() }
21 }
22
23 impl AsRef<str> for $name {
24 fn as_ref(&self) -> &'static str { csi!($value) }
25 }
26 };
27}