13 stable releases
Uses new Rust 2024
| 2.6.0 | Apr 16, 2026 |
|---|---|
| 2.5.0 | Mar 6, 2026 |
| 2.4.4 | Feb 4, 2026 |
| 2.4.2 | Dec 11, 2025 |
| 2.2.1 | Jun 26, 2025 |
#1128 in Rust patterns
34 downloads per month
Used in fyi_msg
30KB
485 lines
FYI ANSI
This crate exports two simple compile-time ANSI formatting macros — csi and
ansi — as well as shortcut helpers for blink, bold, dim,
italic, strike, and underline.
Examples
use fyi_ansi::{ansi, csi};
// The `csi` macro generates (only) the ANSI formatting sequence.
assert_eq!(csi!(bold, underline), "\x1b[1;4m");
// The `ansi` macro generates formatted content strings.
assert_eq!(
concat!(ansi!((bold, light_red) "Error:"), " Oh no!"),
"\x1b[1;91mError:\x1b[0m Oh no!",
);
The bold, dim, etc., macros are only shortcuts, but can help declutter
your code when there's only the one style being toggled.
use fyi_ansi::{blink, bold, dim, italic, strike, underline};
// Same as with `ansi`, they terminate with a blanket reset by default.
assert_eq!(bold!("I'm bold!"), "\x1b[1mI'm bold!\x1b[0m");
assert_eq!(dim!("I'm dim!"), "\x1b[2mI'm dim!\x1b[0m");
assert_eq!(italic!("I'm italic!"), "\x1b[3mI'm italic!\x1b[0m");
assert_eq!(underline!("I'm underlined!"), "\x1b[4mI'm underlined!\x1b[0m");
assert_eq!(blink!("I'm annoying!"), "\x1b[5mI'm annoying!\x1b[0m");
assert_eq!(strike!("I'm struck!"), "\x1b[9mI'm struck!\x1b[0m");