#tree #formatting #pretty-print #derive #charset

display_tree

简单、自动和可定制的树形美化打印

4个稳定版本

1.1.2 2022年12月20日
1.1.0 2022年12月19日
1.0.3 2022年12月19日

#158 in 值格式化

Download history 21/week @ 2024-03-12 10/week @ 2024-03-19 5/week @ 2024-03-26 26/week @ 2024-04-02 22/week @ 2024-04-09 10/week @ 2024-04-16 16/week @ 2024-04-23 10/week @ 2024-04-30 11/week @ 2024-05-07 9/week @ 2024-05-14 24/week @ 2024-05-21 7/week @ 2024-05-28 17/week @ 2024-06-04 23/week @ 2024-06-11 71/week @ 2024-06-18 230/week @ 2024-06-25

343 每月下载量

MIT/Apache

41KB
510

display_tree

在Rust中实现简单、自动和可定制的树形美化打印。

Example

此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