termion/
macros.rs

1/// Create a CSI-introduced sequence.
2macro_rules! csi {
3    ($( $l:expr ),*) => { concat!("\x1B[", $( $l ),*) };
4}
5
6/// Derive a CSI sequence struct.
7macro_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}