pub fn toposort<K, I>( input: impl IntoIterator<Item = K>, deps: impl Fn(&K) -> I, ) -> Result<Vec<K>, TopoSortCycle>where K: Eq + Hash + Clone, I: Iterator<Item = K>,