3 个版本

0.1.2 2020 年 8 月 31 日
0.1.1 2020 年 8 月 31 日
0.1.0 2020 年 8 月 31 日

#497文本处理

Download history 999/week @ 2024-03-14 1688/week @ 2024-03-21 615/week @ 2024-03-28 764/week @ 2024-04-04 800/week @ 2024-04-11 777/week @ 2024-04-18 727/week @ 2024-04-25 543/week @ 2024-05-02 415/week @ 2024-05-09 488/week @ 2024-05-16 384/week @ 2024-05-23 500/week @ 2024-05-30 681/week @ 2024-06-06 667/week @ 2024-06-13 397/week @ 2024-06-20 534/week @ 2024-06-27

2,426 每月下载
用于 7 个 Crates (6 直接)

MIT 许可证

32KB
422

Crate text_trees

简单文本输出,用于树形结构。

MIT License Minimum Rust Version Rust GitHub stars crates.io docs.rs

此 Crate 另一个可以输出树形结构的文本。类似于现有的 ascii_tree Crate,但它在格式化选项上更灵活。

示例

以下使用 with_child_nodeswith_children 的组合创建了一个 StringTreeNode,该组合可以很好地展示树的结构。

use text_trees::StringTreeNode;

fn make_tree() -> StringTreeNode {
    StringTreeNode::with_child_nodes(
        "root".to_string(),
        vec![
            "Uncle".into(),
            StringTreeNode::with_child_nodes(
                "Parent".to_string(),
                vec![
                    StringTreeNode::with_children(
                        "Child 1".to_string(),
                        vec!["Grand Child 1".into()].into_iter(),
                    ),
                    StringTreeNode::with_child_nodes(
                        "Child 2".to_string(),
                        vec![StringTreeNode::with_child_nodes(
                            "Grand Child 2".to_string(),
                            vec![StringTreeNode::with_children(
                                "Great Grand Child 2".to_string(),
                                vec!["Great Great Grand Child 2".to_string()].into_iter(),
                            )]
                            .into_iter(),
                        )]
                        .into_iter(),
                    ),
                ]
                .into_iter(),
            ),
            StringTreeNode::with_children(
                "Aunt".to_string(),
                vec!["Child 3".to_string()].into_iter(),
            ),
        ]
        .into_iter(),
    )
}

树实现了 Display,因此提供了 to_string 方法。它还有一个 to_string_with_format 方法,允许自定义输出格式。最后,它有两个 write 方法,它们接受 std::io::Write 的实现,并将相应地进行序列化。

use text_trees::{FormatCharacters, TreeFormatting, TreeNode};

fn ascii_tree(tree: TreeNode<String>) {
    let result = tree.to_string_with_format(
        &TreeFormatting::dir_tree(FormatCharacters::ascii())
    );
    assert!(result.is_ok());

    // ... do something else
}

这导致以下文本表示的树。

root
+-- Uncle
+-- Parent
|   +-- Child 1
|   |   '-- Grand Child 1
|   '-- Child 2
|       '-- Grand Child 2
|           '-- Great Grand Child 2
|               '-- Great Great Grand Child 2
'-- Aunt
    '-- Child 3

变更

版本 0.1.2

  • 仅文档更改。

版本 0.1.1

  • 顶部向下、底部锚定的树缺失间距的错误。
  • 更新所有示例以匹配树输出更改。
  • 添加了 tls 树-ls 示例。

版本 0.1.0

  • 初始版本,仅支持 目录 样式的树。

待办事项

TBD

无运行时依赖