cli-table 项目使用教程
项目介绍
cli-table
是一个 Rust 语言编写的开源库,用于在命令行界面中打印表格。它提供了丰富的功能,包括表格样式定制、内容对齐、边框设置等,使得在命令行中展示数据更加美观和易读。
项目快速启动
安装
首先,在您的 Rust 项目中添加 cli-table
依赖:
[dependencies]
cli-table = "0.4"
基本使用
以下是一个简单的示例,展示如何在命令行中打印一个表格:
use cli_table::{format::Justify, print_stdout, Cell, Style, Table};
fn main() {
let table = vec![
vec!["Tom".cell().bold(true), 10.cell().justify(Justify::Right)],
vec!["Jerry".cell().bold(true), 15.cell().justify(Justify::Right)],
vec!["Scooby Doo".cell().bold(true), 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());
}
运行上述代码,您将看到如下输出:
+------------+----------------+
| Name | Age (in years) |
+------------+----------------+
| Tom | 10 |
+------------+----------------+
| Jerry | 15 |
+------------+----------------+
| Scooby Doo | 20 |
+------------+----------------+
应用案例和最佳实践
自定义样式
您可以通过调用 Style
和 Cell
结构体的方法来自定义表格和单元格的样式。例如,设置边框和内容对齐:
use cli_table::{format::{Justify, Border}, print_stdout, Cell, Style, Table};
fn main() {
let table = vec![
vec!["Tom".cell().bold(true), 10.cell().justify(Justify::Right)],
vec!["Jerry".cell().bold(true), 15.cell().justify(Justify::Right)],
vec!["Scooby Doo".cell().bold(true), 20.cell().justify(Justify::Right)],
].table()
.title(vec![
"Name".cell().bold(true),
"Age (in years)".cell().bold(true),
])
.border(Border::builder().build())
.bold(true);
assert!(print_stdout(table).is_ok());
}
处理 CSV 数据
cli-table
还支持从 CSV 数据生成表格。以下是一个示例:
use cli_table::{format::Justify, print_stdout, Cell, Style, Table};
use csv::Reader;
fn main() {
let mut rdr = Reader::from_path("data.csv").unwrap();
let mut table = vec![].table();
for result in rdr.records() {
let record = result.unwrap();
let row = record.iter().map(|field| field.cell()).collect();
table.add_row(row);
}
assert!(print_stdout(table).is_ok());
}
典型生态项目
cli-table
可以与其他 Rust 命令行工具项目结合使用,例如:
- ripgrep: 一个快速且功能强大的命令行搜索工具。
- bat: 一个带有语法高亮和 Git 集成的
cat
替代工具。 - exa: 一个现代的
ls
替代工具,具有更好的默认设置和颜色。
通过结合这些工具,您可以创建功能强大且用户友好的命令行应用程序。