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;
Add this to your Cargo.toml
:
toml
[build-dependencies]
static-graph = "0.2"
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.
Volo is dual-licensed under the MIT license and the Apache License (Version 2.0).
See LICENSE-MIT and LICENSE-APACHE for details.
Feishu: Scan the QR code below with Feishu or click this link to join our CloudWeGo Volo user group.