fn dfs_check_cycle<'a>( id: &'a NodeId, nodes: &'a HashMap<NodeId, TaskNode>, color: &mut HashMap<&'a NodeId, u8>, ) -> Result<(), TaskGraphError>