static-graph

Crates.io License Build Status

This crate provides the ability to generate static graphs by analysing the node dependencies in DSL. It allows only one input and one output in a graph, and independent nodes can run in maximum parallel.

For example, in the following graph(the number represents the execution time of the node), run it in serial will take 6 seconds, but run it in maximum parallel will just take 2 seconds.

mermaid graph TD; A/0-->B/1; A/0-->C/2; A/0-->D/1; A/0-->E/1; B/1-->F/0; C/2-->F/0; D/1-->G/1; E/1-->G/1; F/0-->H/0; G/1-->H/0;

Usage

Add this to your Cargo.toml:

toml [build-dependencies] static-graph = "0.2"

Example

Write a graph description in example.graph file:

```txt node E -> (X, Y) { #[default = "crate::Custom::new"] custom: crate::Custom, }

node X -> O { x: list, }

node Y -> O { y: map, }

node O { #[editable = "true"] o: string, }

graph G(E) ```

Then, in build.rs:

rust fn main() { static_graph::configure().compile("example.graph").unwrap(); }

Finally, in main.rs write your own logic.

License

Volo is dual-licensed under the MIT license and the Apache License (Version 2.0).

See LICENSE-MIT and LICENSE-APACHE for details.

Community