3 个版本
0.1.2 | 2020 年 8 月 31 日 |
---|---|
0.1.1 | 2020 年 8 月 31 日 |
0.1.0 | 2020 年 8 月 31 日 |
#497 在 文本处理 中
2,426 每月下载
用于 7 个 Crates (6 直接)
32KB
422 行
Crate text_trees
简单文本输出,用于树形结构。
此 Crate 另一个可以输出树形结构的文本。类似于现有的 ascii_tree Crate,但它在格式化选项上更灵活。
示例
以下使用 with_child_nodes
和 with_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