pub fn conditional_links<'a>(
        &'a self,
        direction: DependencyDirection,
    ) -> impl Iterator<Item = ConditionalLink<'g>> + 'a {
        let graph = self.graph;
        self.core
            .links(graph.dep_graph(), graph.sccs(), direction)
            .filter_map(move |(source_ix, target_ix, edge_ix)| {
                graph
                    .edge_to_conditional_link(source_ix, target_ix, edge_ix, None)
                    .map(|(link, _)| link)
            })
    }
Creates an iterator over `ConditionalLink` instances in the direction specified.

## Cycles

The links in a dependency cycle will be returned in non-dev order. When the direction is
forward, if feature Foo has a dependency on Bar, and Bar has a cyclic dev-dependency on Foo,
then the link Foo -> Bar is returned before the link Bar -> Foo.
guppy/src/graph/feature/resolve.rs