โจ Features
-
๐จ Style โ foreground/background colors, bold, italic, underline, dim, blink, reverse, strikethrough, overline, conceal, frame, encircle, links
-
๐ Console markup โ
[bold red]text[/bold red]BBCode-like inline styling -
๐ฏ 256 named colors โ full ANSI 256-color palette with aliases, hex, RGB, auto-downgrade
-
๐ญ 170+ theme styles โ repr, json, markdown, logging, traceback, rule, bar, progress, table, tree, syntax, prompt categories
-
๐ Table โ tabular data with headers, footers, colspan/rowspan, column alignment, sections, 17 box styles
-
๐ฒ Tree โ hierarchical tree rendering with Unicode guides
-
๐ฆ Panel โ bordered containers with titles, subtitles
-
โ Rule โ horizontal dividers with optional titles
-
๐ Padding & Align โ CSS-style padding and alignment helpers
-
๐ Columns โ side-by-side layout
-
๐๏ธ Layout โ recursive split-pane layout with ratio sizing
-
โณ Progress โ multi-task progress bars with 11 column types, file tracking,
track()iterator -
๐ Spinner โ 55 animated spinners with case-insensitive name lookup
-
๐ Status โ spinner + message with in-place update
-
๐ Live โ auto-updating displays with alt-screen, transient mode, stdout/stderr redirect via
LiveWriter -
๐ Syntax highlighting โ powered by syntect (100+ languages)
-
๐ Markdown โ headings, code blocks, lists, blockquotes, links, tables
-
๐ JSON โ pretty-printed, syntax-highlighted JSON
-
๐ Logging โ Rich-formatted log records via the
logcrate -
๐ผ๏ธ Box drawing โ 17 box styles (rounded, square, heavy, double, ASCII, etc.)
-
๐ฅ๏ธ Screen / Alt-screen โ full-screen terminal applications with
ScreenContext -
โจ๏ธ Prompts โ
Prompt,IntPrompt,FloatPrompt,Confirm,Select<T>, password mode -
๐ด Traceback โ rich exception rendering with locals, source code, frame suppression, panic hook
-
๐ค HTML & SVG export โ capture console output for the web
-
๐งฉ Segment utilities โ simplify, split_lines, strip_styles, strip_links, align, divide, set_shape, filter_control
๐ฆ Installation
[]
= "0.2"
๐ Quick Start
use ;
๐ฏ Colors (256 names)
use ;
// Named colors โ 256 ANSI palette
let red = parse.unwrap;
let hot_pink = parse.unwrap;
let steel_blue = parse.unwrap;
let grey53 = parse.unwrap;
// Hex / RGB
let orange = from_hex.unwrap;
let custom = from_rgb;
// TrueColor โ 8-bit โ Standard auto-downgrade
let style = new
.color
.bgcolor
.bold
.italic;
๐ Table with Colspan & Rowspan
use ;
let mut table = new.title;
table.add_column;
table.add_column; // spans 2 columns
table.add_column; // skipped by colspan above
let row = vec!;
table.add_row;
โณ Progress Bars
use Progress;
use thread;
use Duration;
let mut progress = new;
let task_id = progress.add_task;
for i in 0..=100
println!;
// Or use the `track()` convenience with an iterator
let items: = .collect;
let tracker = progress.track;
for item in tracker
๐ Markdown (with tables)
use render_markdown;
use Console;
let md = render_markdown;
let console = new;
console.println;
โจ๏ธ Interactive Prompts
use ;
// String input
let name = ask_with.unwrap;
// Password input (masked with *)
let password = new.password.ask.unwrap;
// Confirmation with default
let ok = ask_with.unwrap;
// Integer with validation
let age = ask_with.unwrap;
// Pick from numbered choices
let choice = new
.choice
.choice
.choice
.ask
.unwrap;
๐ Live Display with Writer
use ;
use Write;
use thread;
use Duration;
let mut live = new;
let mut writer = live.create_writer;
live.start.unwrap;
for i in 0..=100
live.stop.unwrap;
๐ด Rich Tracebacks
use traceback;
// Install a global panic hook for rich tracebacks
install;
// Or render manually
let tb = from_exception
.show_locals
.max_frames
.suppress;
๐ฅ๏ธ Full-Screen Apps
use ;
use thread;
use Duration;
let mut console = new;
let mut screen = console.screen; // enters alternate screen
screen.enter;
let mut live = new;
live.start.unwrap;
for i in 0..=100
live.stop.unwrap;
screen.exit; // restores terminal
๐จ Box Styles (17 built-in)
| Style | Preview |
|---|---|
BOX_ROUNDED |
โญโโฎ โ โ โฐโโฏ |
BOX_SQUARE |
โโโ โ โ โโโ |
BOX_HEAVY |
โโโ โ โ โโโ |
BOX_DOUBLE |
โโโ โ โ โโโ |
BOX_DOUBLE_EDGE |
โโโ โ โ โโโ |
BOX_HEAVY_EDGE |
โโโ โ โ โโโ |
BOX_HEAVY_HEAD |
โโโ โ โ โโโ |
BOX_SIMPLE |
borderless with separators |
BOX_SIMPLE_HEAVY |
borderless with heavy separators |
BOX_MINIMAL |
minimal horizontal rules |
BOX_ASCII |
+--+ ASCII-safe |
BOX_ASCII2 |
+--+ alternate ASCII |
BOX_MARKDOWN |
pipe-style markdown tables |
| โฆ and 4 more |
๐งฉ Segment Utilities
use ;
let segs: Segments = vec!.into;
// Combine adjacent same-styled segments
let simplified = segs.simplify; // โ one "Hello World" segment
// Split into lines
let lines = split_lines;
// Strip all styling
let plain = strip_styles; // โ "Hello World"
// Align vertically
let aligned = align_middle;
๐ Module Map
src/
โโโ lib.rs # Crate root + re-exports
โโโ console.rs # Central rendering engine
โโโ screen.rs # Full-screen / alt-screen / ScreenContext
โโโ color.rs # TrueColor / 256 / Standard (256 names)
โโโ style.rs # 13 attributes + hyperlinks + metadata
โโโ theme.rs # 170+ named styles + stack
โโโ segment.rs # Segment + 9 utility functions
โโโ text.rs # Text with Span styling
โโโ cells.rs # Unicode cell width utilities
โโโ measure.rs # Width measurement protocol
โโโ align.rs # Horizontal + vertical alignment
โโโ ratio.rs # Proportional space distribution
โโโ markup.rs # BBCode-like markup parser
โโโ highlighter.rs # Regex/Repr highlighters
โ
โโโ panel.rs # Bordered container
โโโ table.rs # Tabular data + colspan/rowspan
โโโ tree.rs # Hierarchical tree
โโโ rule.rs # Horizontal divider
โโโ padding.rs # CSS-style padding
โโโ columns.rs # Side-by-side layout
โโโ layout.rs # Split-pane layout
โโโ box_drawing.rs # 17 box/border styles
โ
โโโ progress.rs # Multi-task progress + track()
โโโ progress_columns.rs # 11 progress column types
โโโ spinner.rs # 55 animated spinners
โโโ status.rs # Spinner + message
โโโ live.rs # Auto-updating display + LiveWriter
โ
โโโ syntax.rs # Syntax highlighting (syntect)
โโโ markdown.rs # Markdown rendering + table support
โโโ json.rs # Pretty-printed JSON
โโโ logging.rs # log crate integration
โโโ prompt.rs # 5 interactive prompt types
โโโ traceback.rs # Rich exception tracebacks
โโโ export.rs # HTML / SVG / text export
๐ฌ Compared to Python Rich
| Feature | Python Rich | rusty-rich |
|---|---|---|
| Console + markup | โ | โ |
| Text / Span / Style | โ | โ |
| 256 named colors | โ | โ |
| Table (colspan/rowspan) | โ | โ |
| Panel / Rule / Tree | โ | โ |
| Layout / Columns | โ | โ |
| Progress (11 column types) | โ | โ |
| Live / Status | โ | โ |
| Syntax highlighting | โ | โ |
| Markdown (incl. tables) | โ | โ |
| JSON / Logging | โ | โ |
| Traceback (locals, suppress) | โ | โ |
| Screen / Alt-screen | โ | โ |
| Prompts (5 types) | โ | โ |
| 55+ Spinners | 80+ | 55 |
| 17 Box styles | 20 | 17 |
| HTML / SVG export | โ | โ |
| Segment utilities | โ | โ |
| LiveWriter / redirect | โ | โ |
| 170+ Theme styles | 170+ | 170+ |
| Pretty / Inspect | โ | โ |
| Emoji / ANSI decoder | โ | โ |
| Jupyter support | โ | โ |
| Overall parity | ~72% |
๐งช Testing
๐ License
MIT โ See LICENSE for details.