Crate cli_table[−][src]
Rust crate for printing tables on command line.
Usage
Add cli-table
in your Cargo.toms
’s dependencies
section
[dependencies]
cli-table = "0.4"
Simple usage
use cli_table::{format::Justify, print_stdout, Cell, Style, Table}; let table = vec![ vec!["Tom".cell(), 10.cell().justify(Justify::Right)], vec!["Jerry".cell(), 15.cell().justify(Justify::Right)], vec!["Scooby Doo".cell(), 20.cell().justify(Justify::Right)], ] .table() .title(vec![ "Name".cell().bold(true), "Age (in years)".cell().bold(true), ]) .bold(true); assert!(print_stdout(table).is_ok());
Below is the output of the table we created just now:
+------------+----------------+
| Name | Age (in years) | <-- This row and all the borders/separators
+------------+----------------+ will appear in bold
| Tom | 10 |
+------------+----------------+
| Jerry | 15 |
+------------+----------------+
| Scooby Doo | 25 |
+------------+----------------+
Derive macro
#[derive(Table)]
can also be used to print a Vec
or slice of struct
s as table.
use cli_table::{format::Justify, print_stdout, Table, WithTitle}; #[derive(Table)] struct User { #[table(title = "ID", justify = "Justify::Right")] id: u64, #[table(title = "First Name")] first_name: &'static str, #[table(title = "Last Name")] last_name: &'static str, } let users = vec![ User { id: 1, first_name: "Scooby", last_name: "Doo", }, User { id: 2, first_name: "John", last_name: "Cena", }, ]; assert!(print_stdout(users.with_title()).is_ok());
Below is the output of the table we created using derive macro:
+----+------------+-----------+
| ID | First Name | Last Name | <-- This row will appear in bold
+----+------------+-----------+
| 1 | Scooby | Doo |
+----+------------+-----------+
| 2 | John | Cena |
+----+------------+-----------+
Field attributes
title
|name
: Used to specify title of a column. Usage:#[table(title = "Title")]
justify
: Used to horizontally justify the contents of a column. Usage:#[table(justify = "Justify::Right")]
align
: Used to vertically align the contents of a column. Usage:#[table(align = "Align::Top")]
color
: Used to specify color of contents of a column. Usage:#[table(color = "Color::Red")]
bold
: Used to specify boldness of contents of a column. Usage:#[table(bold)]
skip
: Used to skip a field from table. Usage:#[table(skip)]
For more information on configurations available on derive macro, go to cli-table/examples/struct.rs
.
Modules
format | Utilities for formatting of a table |
Structs
CellStruct | Concrete cell of a table |
RowStruct | Concrete row of a table |
TableStruct | Struct for building a table on command line |
Enums
Color | The set of available colors for the terminal foreground/background. |
ColorChoice | ColorChoice represents the color preferences of an end user. |
Traits
Cell | Trait to convert raw types into cells |
Row | Trait to convert raw types into rows |
Style | Trait for modifying style of table and cells |
Table | Trait to convert raw type into table |
Title | title or derive Trait for getting title row of a struct |
WithTitle | title or derive Trait for creating a table with titles at the top |
Functions
print_stderr | Prints a table to |
print_stdout | Prints a table to |
Derive Macros
Table | derive Derive macro to implementing |