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
Gen AI apps are built with MongoDB Atlas Icon
Gen AI apps are built with MongoDB Atlas

The database for AI-powered applications.

MongoDB Atlas is the developer-friendly database used to build, scale, and run gen AI and LLM-powered apps—without needing a separate vector database. Atlas offers built-in vector search, global availability across 115+ regions, and flexible document modeling. Start building AI apps faster, all in one place.
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