2 个版本

0.0.2 2022年10月5日
0.0.1 2022年10月4日

#2260 in 数据结构

自定义许可证

39KB
746

logo

EO principles respected here We recommend IntelliJ IDEA

cargo crates.io PDD status codecov Hits-of-Code Lines of code License

此 Rust 库帮助您为 reo 编译器构建 EO 程序的对象树。

创建树

use sot::Sot;
let mut sot = Sot::empty();
sot.add(0)?; // add a vertex no.0
sot.add(1)?; // add a vertex no.1
sot.bind(0, 1, "foo")?; // connect v0 to v1 with label "foo"
sot.put(1, "Hello, world!".as_bytes().to_vec())?; // attach data to v1

您可以通过从另一个顶点出发的边的标签找到一个顶点

let id = sot.kid(0, "foo")?; // returns 1

您可以找到顶点的所有子节点

let kids: Vec<(String, u32)> = sot.kids(0);

您可以读取顶点的数据

let bytes: Vec<u8> = sot.data(1)?; // empty if no data written before

然后,您可以打印树

println!("{:?}", sot);

此外,您还可以序列化和反序列化树。

依赖项

~5–6.5MB
~126K SLoC