It can be embedded as a macro or parsed from a string or file.

let g1 = rust_dot! {
   graph {
       A -- B -- C; /* semicolon is optional */
       "B" -- D // quotes not needed here
   }
};
println!("{} {} \"{}\" {:?} {:?}", g1.strict, g1.directed, g1.name, g1.nodes, g1.edges);
// false false "" ["A", "B", "C", "D"] [(0, 1), (1, 2), (1, 3)]

let g2 = parse_string("digraph Didi { -1 -> 2 -> 3  2 -> 4.2 }");
println!("{} {} \"{}\" {:?} {:?}", g2.strict, g2.directed, g2.name, g2.nodes, g2.edges);
// false true "Didi" ["-1", "2", "3", "4.2"] [(0, 1), (1, 2), (1, 3)]

The return values can be fed to crates petgraph (or graph/graph_builder):

let mut petgraph = petgraph::graph::Graph::new();
let nodes: Vec<_> = rust_dot_graph.nodes
   .iter()
   .map(|node| petgraph
       .add_node(node))
   .collect();
for edge in rust_dot_graph.edges {
   petgraph
       .add_edge(nodes[edge.0], nodes[edge.1], ());
};

Features

  • graph
  • rust
  • graphviz
  • dot
  • dsl
  • macro

Project Activity

See All Activity >

License

Apache License V2.0, MIT License

Follow rust_dot

rust_dot Web Site

Other Useful Business Software
Outgrown Windows Task Scheduler? Icon
Outgrown Windows Task Scheduler?

Free diagnostic identifies where your workflow is breaking down—with instant analysis of your scheduling environment.

Windows Task Scheduler wasn't built for complex, cross-platform automation. Get a free diagnostic that shows exactly where things are failing and provides remediation recommendations. Interactive HTML report delivered in minutes.
Download Free Tool
Rate This Project
Login To Rate This Project

User Reviews

Be the first to post a review of rust_dot!

Additional Project Details

Registered

2024-02-18