This Rust library implements a Surging Object DiGraph (SODG) for reo virtual machine for EO programs.
Here is how you can create a di-graph:
use sodg::Sodg;
use sodg::Hex;
let mut g = Sodg::empty();
g.add(0)?; // add a vertex no.0
g.add(1)?; // add a vertex no.1
g.bind(0, 1, "foo/bar")?; // connect v0 to v1 with label "foo"
g.put(1, Hex::from_str_bytes("Hello, world!"))?; // attach data to v1
Then, you can find a vertex by the label of an edge departing from another vertex:
let id = g.kid(0, "foo")?;
assert_eq!(1, id);
Then, you can find all kids of a vertex:
let kids: Vec<(String, String, u32)> = g.kids(0);
assert_eq!("foo", kids[0].0);
assert_eq!("bar", kids[0].1);
assert_eq!(1, kids[0].2);
Then, you can read the data of a vertex:
let hex: Hex = g.data(1)?;
let num: i64 = hex.to_i64()?;
assert_eq!(42, num);
Then, you can print the graph:
println!("{:?}", g);
Also, you can serialize and deserialize the graph.
Read the documentation.
How to Contribute
First, install Rust and then:
$ cargo test --vv
If everything goes well, fork repository, make changes, send us a pull request. We will review your changes and apply them to the master
branch shortly, provided they don't violate our quality standards. To avoid frustration, before sending us your pull request please run cargo test
again. Also, run cargo fmt
and cargo clippy
.