Most kinds of graph representations have some notion of directionality,
which we term “source-to-sink” or “sink-to-source” edges. By convention,
renderers render in order from sources to sinks (and apply some kind of bias
or referential transform if there are cycles with no topological ordering).
For nodes that store “sink-to-source” edge pointers to other nodes,
sources should be filled out and sinks left empty, and vice-versa for
“source-to-sink” edges. Arbitrary combinations can also be chosen depending
on what ordering is preferred.
A trait implemented for the T in triple_arena::Arena<P, T>, intended
where T is some kind of graph node element. P corresponds to the
P being used for the arena, and allows renderers to automatically
traverse the graph in the arena.
Renders an SVG graph representation of arena in a top-down order from
sources to sinks. Cycles are broken up by inserting Ptr reference nodes.
If error_on_invalid_ptr then this will return an error if an invalid
Ptr is encountered, otherwise it will insert Ptr nodes with
“(invalid)” appended.