9个版本
使用旧Rust 2015
0.2.0 | 2020年4月26日 |
---|---|
0.1.7 | 2018年3月10日 |
0.1.6 | 2017年8月12日 |
0.1.5 | 2016年10月5日 |
0.1.1 | 2015年6月28日 |
#718 在 Rust模式 中
7,249 每月下载量
被 15 个 包使用(其中13个直接使用)
27KB
443 行
rust-term-grid
此库使用算法将文本数据以网格格式排列,适用于固定宽度字体,以最小化所需空间。
查看Rustdoc
安装
此crate与Cargo一起使用。将以下内容添加到您的Cargo.toml
依赖关系部分
[dependencies]
term_grid = "0.2"
此crate测试的Rust最早版本是Rust v1.31.0。
用法
此库使用算法将文本数据以网格格式排列,适用于固定宽度字体,以最小化所需空间。例如
use term_grid::{Grid, GridOptions, Direction, Filling, Cell};
let mut grid = Grid::new(GridOptions {
filling: Filling::Spaces(1),
direction: Direction::LeftToRight,
});
for s in &["one", "two", "three", "four", "five", "six", "seven",
"eight", "nine", "ten", "eleven", "twelve"]
{
grid.add(Cell::from(*s));
}
println!("{}", grid.fit_into_width(24).unwrap());
生成以下表格结果
one two three four
five six seven eight
nine ten eleven twelve
创建网格
要将数据添加到网格中,首先创建一个新的Grid
值,然后使用add
方法将单元格添加到其中。
在GridOptions
值中必须指定两个选项,以决定网格的格式化方式
filling
:在两列之间放置什么 - 要么是空格的数量,要么是文本字符串;direction
,指定单元格应沿行还是列排列Direction::LeftToRight
从左上角开始,向右移动,在到达最后一列后转到新行的开始;Direction::TopToBottom
从左上角开始,向下移动,到达最后一行后移动到新列的顶部。
显示网格
在显示网格时,你可以事先指定列数,或者尝试在一个给定宽度的区域内找到可以容纳的最大列数。
将一系列单元格拆分为列(或者说,每n个单元格开始新的一行)可以通过在Grid
值上使用fit_into_columns
方法来实现。它接受列数作为参数。
尽可能将尽可能多的数据放入一个屏幕上是通过指定最大宽度来实现的。这是通过fit_into_width
方法实现的。它接受包括分隔符在内的最大允许宽度作为参数。然而,它返回一个可选的 Display
值,这取决于是否有任何单元格的实际宽度大于最大宽度!如果是这种情况,最好的办法是每行输出一个单元格。
单元格和数据
网格不接受String
或&str
——它们接受Cells
。
单元格是一个结构体,包含单个单元格的内容,作为一个字符串,以及其预计算的长度,该长度在计算网格最终维度时被使用。通常,你希望使用字符串的Unicode宽度,因此你可以使用.into()
方法将String
转换为Cell
。
但是,你也可能想要提供自己的宽度:当你已经知道宽度时,或者当你想更改测量,例如跳过终止控制字符时。对于这些情况,Cell
值的字段是公共的,这意味着你可以根据需要构造自己的实例。
依赖项
~370KB