如何将格式良好的表格打印到控制台?
How to print well-formatted tables to the console?
我有一个程序可以打印出应该打印成看起来像 table 的格式的数据。但是,当数字长于 2 时,table 中断。我知道 width
parameter in std::fmt
,但我无法理解它。
当前输出:
---------------------------------------
| total | blanks: | comments: | code: |
---------------------------------------
| 0 | 0 | 0 | 0 |
| 77 | 0 | 3 | 74 |
| 112 | 0 | 6 | 106 |
| 178 | 0 | 6 | 172 |
| 218 | 0 | 7 | 211 |
| 289 | 0 | 8 | 281 |
| 380 | 0 | 9 | 371 |
| 460 | 0 | 10 | 450 |
| 535 | 0 | 11 | 524 |
| 611 | 0 | 12 | 599 |
| 692 | 0 | 14 | 678 |
| 772 | 0 | 17 | 755 |
| 873 | 0 | 18 | 855 |
| 963 | 0 | 19 | 944 |
| 1390 | 0 | 19 | 1371 |
| 1808 | 0 | 19 | 1789 |
| 2011 | 0 | 19 | 1992 |
| 2259 | 0 | 19 | 2240 |
| 2294 | 0 | 19 | 2275 |
| 2349 | 0 | 19 | 2330 |
| 2376 | 0 | 19 | 2357 |
| 2430 | 0 | 19 | 2411 |
| 2451 | 0 | 19 | 2432 |
| 2515 | 13 | 19 | 2483 |
| 2559 | 13 | 19 | 2527 |
语法类似于 Python 中的 str.format 语法。这个:
fn main() {
println!(
"{0: <10} | {1: <10} | {2: <10} | {3: <10}",
"total", "blanks", "comments", "code"
);
println!("{0: <10} | {1: <10} | {2: <10} | {3: <10}", 0, 0, 0, 0);
println!("{0: <10} | {1: <10} | {2: <10} | {3: <10}", 77, 0, 3, 74);
println!("{0: <10} | {1: <10} | {2: <10} | {3: <10}", 112, 0, 6, 106);
println!(
"{0: <10} | {1: <10} | {2: <10} | {3: <10}",
460, 0, 10, 1371
);
}
产生以下输出:
total | blanks | comments | code
0 | 0 | 0 | 0
77 | 0 | 3 | 74
112 | 0 | 6 | 106
460 | 0 | 10 | 1371
或者您可以使用专门的 crate 来格式化表格,例如 prettytable-rs
我有一个程序可以打印出应该打印成看起来像 table 的格式的数据。但是,当数字长于 2 时,table 中断。我知道 width
parameter in std::fmt
,但我无法理解它。
当前输出:
---------------------------------------
| total | blanks: | comments: | code: |
---------------------------------------
| 0 | 0 | 0 | 0 |
| 77 | 0 | 3 | 74 |
| 112 | 0 | 6 | 106 |
| 178 | 0 | 6 | 172 |
| 218 | 0 | 7 | 211 |
| 289 | 0 | 8 | 281 |
| 380 | 0 | 9 | 371 |
| 460 | 0 | 10 | 450 |
| 535 | 0 | 11 | 524 |
| 611 | 0 | 12 | 599 |
| 692 | 0 | 14 | 678 |
| 772 | 0 | 17 | 755 |
| 873 | 0 | 18 | 855 |
| 963 | 0 | 19 | 944 |
| 1390 | 0 | 19 | 1371 |
| 1808 | 0 | 19 | 1789 |
| 2011 | 0 | 19 | 1992 |
| 2259 | 0 | 19 | 2240 |
| 2294 | 0 | 19 | 2275 |
| 2349 | 0 | 19 | 2330 |
| 2376 | 0 | 19 | 2357 |
| 2430 | 0 | 19 | 2411 |
| 2451 | 0 | 19 | 2432 |
| 2515 | 13 | 19 | 2483 |
| 2559 | 13 | 19 | 2527 |
语法类似于 Python 中的 str.format 语法。这个:
fn main() {
println!(
"{0: <10} | {1: <10} | {2: <10} | {3: <10}",
"total", "blanks", "comments", "code"
);
println!("{0: <10} | {1: <10} | {2: <10} | {3: <10}", 0, 0, 0, 0);
println!("{0: <10} | {1: <10} | {2: <10} | {3: <10}", 77, 0, 3, 74);
println!("{0: <10} | {1: <10} | {2: <10} | {3: <10}", 112, 0, 6, 106);
println!(
"{0: <10} | {1: <10} | {2: <10} | {3: <10}",
460, 0, 10, 1371
);
}
产生以下输出:
total | blanks | comments | code
0 | 0 | 0 | 0
77 | 0 | 3 | 74
112 | 0 | 6 | 106
460 | 0 | 10 | 1371
或者您可以使用专门的 crate 来格式化表格,例如 prettytable-rs