diff --git a/lib/src/dag_walk.rs b/lib/src/dag_walk.rs index fcce60671..782c04030 100644 --- a/lib/src/dag_walk.rs +++ b/lib/src/dag_walk.rs @@ -43,10 +43,10 @@ where } /// Returns neighbors before the node itself. -pub fn topo_order_reverse<'a, T, ID, II, NI>( +pub fn topo_order_reverse( start: II, - id_fn: Box ID + 'a>, - mut neighbors_fn: Box NI + 'a>, + id_fn: impl Fn(&T) -> ID, + mut neighbors_fn: impl FnMut(&T) -> NI, ) -> Vec where T: Hash + Eq + Clone, @@ -215,11 +215,8 @@ mod tests { 'C' => vec!['B'], }; - let common = topo_order_reverse( - vec!['C'], - Box::new(|node| *node), - Box::new(move |node| neighbors[node].clone()), - ); + let common = + topo_order_reverse(vec!['C'], |node| *node, move |node| neighbors[node].clone()); assert_eq!(common, vec!['C', 'B', 'A']); } @@ -245,11 +242,8 @@ mod tests { 'F' => vec!['E', 'D'], }; - let common = topo_order_reverse( - vec!['F'], - Box::new(|node| *node), - Box::new(move |node| neighbors[node].clone()), - ); + let common = + topo_order_reverse(vec!['F'], |node| *node, move |node| neighbors[node].clone()); assert_eq!(common, vec!['F', 'E', 'D', 'C', 'B', 'A']); } @@ -279,8 +273,8 @@ mod tests { let common = topo_order_reverse( vec!['F', 'C'], - Box::new(|node| *node), - Box::new(move |node| neighbors[node].clone()), + |node| *node, + move |node| neighbors[node].clone(), ); assert_eq!(common, vec!['F', 'E', 'D', 'C', 'B', 'A']); diff --git a/lib/src/repo.rs b/lib/src/repo.rs index 1f74ee559..4db798e6b 100644 --- a/lib/src/repo.rs +++ b/lib/src/repo.rs @@ -851,14 +851,14 @@ impl MutableRepo { } else { let missing_commits = topo_order_reverse( vec![head.clone()], - Box::new(|commit: &Commit| commit.id().clone()), - Box::new(|commit: &Commit| -> Vec { + |commit: &Commit| commit.id().clone(), + |commit: &Commit| -> Vec { commit .parents() .into_iter() .filter(|parent| !self.index().has_id(parent.id())) .collect() - }), + }, ); for missing_commit in missing_commits.iter().rev() { self.index.add_commit(missing_commit); diff --git a/lib/src/rewrite.rs b/lib/src/rewrite.rs index fbb540127..f199957ca 100644 --- a/lib/src/rewrite.rs +++ b/lib/src/rewrite.rs @@ -189,8 +189,8 @@ impl<'settings, 'repo> DescendantRebaser<'settings, 'repo> { // rewritten, make sure we rebase the rewritten parent first. let to_visit = dag_walk::topo_order_reverse( to_visit, - Box::new(|commit| commit.id().clone()), - Box::new(|commit| { + |commit| commit.id().clone(), + |commit| { visited.insert(commit.id().clone()); let mut dependents = vec![]; for parent in commit.parents() { @@ -206,7 +206,7 @@ impl<'settings, 'repo> DescendantRebaser<'settings, 'repo> { } } dependents - }), + }, ); let new_commits = rewritten.values().flatten().cloned().collect(); diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 48039d484..a840591eb 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -1676,8 +1676,8 @@ fn cmd_obslog(ui: &mut Ui, command: &CommandHelper, args: &ObslogArgs) -> Result let commits = topo_order_reverse( vec![start_commit], - Box::new(|commit: &Commit| commit.id().clone()), - Box::new(|commit: &Commit| commit.predecessors()), + |commit: &Commit| commit.id().clone(), + |commit: &Commit| commit.predecessors(), ); if !args.no_graph { let mut graph = get_graphlog(command.settings(), formatter.raw()); diff --git a/src/commands/operation.rs b/src/commands/operation.rs index 96825435a..7c679757e 100644 --- a/src/commands/operation.rs +++ b/src/commands/operation.rs @@ -84,8 +84,8 @@ fn cmd_op_log( let default_node_symbol = graph.default_node_symbol().to_owned(); for op in topo_order_reverse( vec![head_op], - Box::new(|op: &Operation| op.id().clone()), - Box::new(|op: &Operation| op.parents()), + |op: &Operation| op.id().clone(), + |op: &Operation| op.parents(), ) { let mut edges = vec![]; for parent in op.parents() {