4个稳定版本
1.1.2 | 2022年12月20日 |
---|---|
1.1.0 | 2022年12月19日 |
1.0.3 | 2022年12月19日 |
#158 in 值格式化
343 每月下载量
41KB
510 行
display_tree
在Rust中实现简单、自动和可定制的树形美化打印。
此crate提供工具,可以轻松地将数据作为树形美化打印,包括表示可以打印为树的特质的trait和一个用于自动为您类型实现它的derive宏
请参阅crate级文档以开始使用。
示例
use display_tree::{AsTree, CharSet, DisplayTree, StyleBuilder};
// A tree representing a numerical expression.
#[derive(DisplayTree)]
enum Expr {
Int(i32),
BinOp {
#[node_label]
op: char,
#[tree]
left: Box<Self>,
#[tree]
right: Box<Self>,
},
UnaryOp {
#[node_label]
op: char,
#[tree]
arg: Box<Self>,
},
}
let expr: Expr = Expr::BinOp {
op: '+',
left: Box::new(Expr::UnaryOp {
op: '-',
arg: Box::new(Expr::Int(2)),
}),
right: Box::new(Expr::Int(7)),
};
assert_eq!(
format!(
"{}",
AsTree::new(&expr)
.indentation(1)
.char_set(CharSet::DOUBLE_LINE)
),
concat!(
"+\n",
"╠═ -\n",
"║ ╚═ Int\n",
"║ ╚═ 2\n",
"╚═ Int\n",
" ╚═ 7",
),
);
依赖项
~1.5MB
~35K SLoC