4个版本 (破坏性)
0.4.0 | 2021年9月30日 |
---|---|
0.3.0 | 2021年9月26日 |
0.2.0 | 2021年9月25日 |
0.1.0 | 2021年9月25日 |
1825 in 数据结构
23KB
634 行
标记树
此crate提供了一种简单的树结构,其中所有节点(根节点除外)都被任意类型标记。
示例
use tagged_tree::Tree;
fn main() {
// create the tree with the root node
let mut tree = Tree::<&'static str, i32>::new(42);
assert_eq!(*tree.value(), 42);
// add the value 1 tagged with "hello"
let (old_val, child) = tree.add_child("hello", 1);
assert!(old_val.is_none());
assert_eq!(*child.value(), 1);
// replace it with 5
let (old_val, child) = tree.add_child("hello", 5);
assert_eq!(old_val.unwrap(), 1);
assert_eq!(*child.value(), 5);
// add a child to the child
child.add_child("world", 2);
// add another child to the original
tree.add_child("greetings", 3);
// iterate over the direct children
for (key, child) in tree.iter_single() {
println!("{}: {}", key, child.value());
}
// depth first traversal
for (key, value) in tree.iter_depth_first() {
println!("{}: {}", key, value);
}
// breadth first traversal
for (key, value) in tree.iter_breadth_first() {
println!("{}: {}", key, value);
}
}
依赖项
~165KB