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
Gemini 3 and 200+ AI Models on One Platform Icon
Gemini 3 and 200+ AI Models on One Platform

Access Google's best plus Claude, Llama, and Gemma. Fine-tune and deploy from one console.

Build, govern, and optimize agents and models with Gemini Enterprise Agent Platform.
Start Free
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