pub fn toposort<G>(
    g: G,
    space: Option<&mut DfsSpace<G::NodeId, G::Map>>
) -> Result<Vec<G::NodeId>, Cycle<G::NodeId>>where
    G: IntoNeighborsDirected + IntoNodeIdentifiers + Visitable,
Expand description

[Generic] Perform a topological sort of a directed graph.

If the graph was acyclic, return a vector of nodes in topological order: each node is ordered before its successors. Otherwise, it will return a Cycle error. Self loops are also cycles.

To handle graphs with cycles, use the scc algorithms or DfsPostOrder instead of this function.

If space is not None, it is used instead of creating a new workspace for graph traversal. The implementation is iterative.