You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This Rust library implements a Surging Object DiGraph (SODG) for
reo virtual machine for
EO programs. The graph is "surging" because
it automatically behind the scene deletes vertices and edges from itself,
which is also known as "garbage collection" mechanism. A vertex gets deleted
right after the data it contains is read and no other vertices
transitively point to it.
Here is how you can create a di-graph:
use sodg::Sodg;use sodg::Hex;letmut g = Sodg::empty(256);
g.add(0);// add a vertex no.0
g.add(1);// add a vertex no.1
g.bind(0,1,"foo");// 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,usize)> = 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);
Using merge(), you can merge two graphs together, provided they are trees.
Using save() and load(), you can serialize and deserialize the graph.
Using to_xml() and to_dot(), you can print it to
XML and
DOT.
Using slice() and slice_some(), you can take a part/slice
of the graph (mostly for debugging purposes).
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.
About
Rust implementation of Surging Object DiGraph (SODG)