A CLI Table Output for Rust π¦ projects.
Add from command line.
cargo install rct
Or add this to your Cargo.toml file.
[dependencies]
rct = "0.2.1"
# Or add from github main branch.
rct = { git = "https://github.com/disco07/rct.git", branch = "main" }
fn main() {
use rct::cell::ICell;
use rct::table::Table;
let mut table = Table::new();
table
.add_header(vec![
"ID".cell(),
"Title".cell(),
"is_enabled".cell(),
"price".cell(),
"currency".cell(),
"description".cell(),
"created_at".cell(),
])
.add_row(vec![
1.cell(),
"Harry \nPotter".cell(),
"1".cell(),
"14.87".cell(),
"β¬".cell(),
"Harry Potter".cell(),
"2001-12-05 22:05:20".cell(),
])
.add_row(vec![
2.cell(),
"Spider-man".cell(),
"0".cell(),
"18.80".cell(),
"β¬".cell(),
"Spider-man, No Way Home.".cell(),
"2018-12-12 09:04:50".cell(),
])
.add_row(vec![
3.cell(),
"Avenger".cell(),
"1".cell(),
"18.50".cell(),
"β¬".cell(),
"Avenger".cell(),
"2017-10-12 10:34:39".cell(),
]);
table.view()
}
use rct::cell::ICell;
use rct::styles::color::{Colorizer, Font};
use rct::table::Table;
fn main() {
let mut table = Table::new();
table
.add_header(vec![
"ID".cell(),
"Title".cell(),
"is_enabled".cell(),
"price".cell(),
"currency".cell(),
"description".cell(),
"created_at".cell(),
])
.add_row(vec![
1.cell(),
"Harry \nPotter".cell().color("#ff0000"),
"1".cell(),
"14.87".cell(),
"β¬".cell(),
"Harry Potter".cell(),
"2001-12-05 22:05:20"
.cell()
.bg("#0000ff")
.font(Font::Blinking),
])
.add_row(vec![
2.cell(),
"Spider-man".cell().font(Font::Italic),
"0".cell(),
"18.80".cell().font(Font::Bold),
"β¬".cell(),
"Spider-man, No Way Home.".cell().font(Font::Strikethrough),
"2018-12-12 09:04:50".cell(),
])
.add_row(vec![
3.cell(),
"Avenger".cell().color("#00ff00"),
"1".cell(),
"18.50".cell(),
"β¬".cell(),
"Avenger".cell(),
"2017-10-12 10:34:39".cell(),
]);
table.view();
}
#[derive(ToTable)] can also be used to print a Vec or slice of structs as table.
use rct::styles::color::{Colorizer, Font};
use rct::ToTable;
#[derive(ToTable)]
struct Movies<T, S> {
#[table(rename = "ID", color = "#00ff00")]
id: T,
#[table(rename = "Title", bg = "#ff0000")]
title: S,
#[table(rename = "Price β¬", font = "Font::Bold")]
price: f32,
}
fn main() {
let movies = [
Movies {
id: 1,
title: "Harry \nPotter".to_string(),
price: 14.87,
},
Movies {
id: 2,
title: "Spider-man".to_string(),
price: 18.80,
},
];
let table = movies.into_iter().to_table();
println!("{}", table);
}
Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.