Judging from the search hits in google and on crates.io (below), many people seem to think dependency graphs of rust crates are useful. Here's a recent blog post about coming to a dependency graph, from the other, manual, human luddite direction:
Have β₯5 inter-dependent crates? You need a graph.
(I'd include the SVG but its apparently not supported here, so please click and have a look.)
Graph Automation Crates
Automation is good, if it can help yield similar results. Just searched a little in this vast landscape:
-
cargo-dot github
deprecated in favor of cargo-graph
Doesn't build (via cargo install
) for me, per below: Victim of cargo patch feature?
error: failed to compile
cargo-graph v0.3.1
, intermediate artifacts can be found at/tmp/cargo-installWtM0pq
Caused by:
failed to select a version for the requirementclap = "~2.11.3"
candidate versions found which didn't match: 2.33.3, 2.33.2, 2.33.1, ...
location searched: crates.io index
required by packagecargo-graph v0.3.1
βΈgit.sr.htβ½
Installed. Made fun of its default output in my blog postβno offense intended, just as a form of hopefully constructive criticism.
I'm pretty sure there is more than what I've found and listed above.
1st question: Who is or wants to become the "heir apparent" in this fertile space?
2nd question: Who might be interested in finding a way to add configuration or flags to such a cargo plugin, in order to be able to automatically arrive at similar quality?
Adding features like:
-
Allowed/disallowed list of deps and/or maximum (e.g. transitive 1Β° 2Β°β¦) distance setting from root
of project/workspace. -
Filtering deps by number of connections (e.g. filtering out leaf nodes that are wholly owned by another closer crate dependency.
-
Providing a means to group or otherwise color code crate (like I did in the above).
-
Distinguish between private and public (and default or non-default feature) dependencies, via edge styles or other markers (like mine above).
-
Any other interesting statistical/heuristic improvements to default graph output, without additional settings.
Also what about some kind of output mode flag for alternatives to graphviz dot like:
- graphviz neato, circulo
- GitHub - mersinvald/aquamarine: Inline diagrams for rustdoc with mermade.js (recently advertised as crate of week)
- GitHub - ivanceras/svgbob: Convert your ascii diagram scribbles into happy little SVG
Anyone interested in working with me on this? I think I'd want "+1" or commit bit to a github hosted source tree, CI, etc. Or lacking that, maybe, I'll just fork and forget, if I can find the time? Thanks for your code under permissive license!