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
AI-powered SAST and AppSec platform that helps companies find and fix vulnerabilities. Icon
AI-powered SAST and AppSec platform that helps companies find and fix vulnerabilities.

Trusted by 750+ companies and performing 200k+ code scans monthly.

ZeroPath (YC S24) is an AI-native application security platform that delivers comprehensive code protection beyond traditional SAST. Founded by security engineers from Tesla and Google, ZeroPath combines large language models with advanced program analysis to find and automatically fix vulnerabilities.
Learn More
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