diff --git a/src/complexagent.rs b/src/complexagent.rs index 8fe81e2..77a0951 100644 --- a/src/complexagent.rs +++ b/src/complexagent.rs @@ -140,8 +140,7 @@ impl FutureMoves { .arena .iter() .enumerate() - .filter(|(_, node)| self.depth_of(node.parent) == depth) - .map(|(idx, _)| idx) + .filter_map(|(idx, node)| (self.depth_of(node.parent) == depth).then_some(idx)) .collect(); for idx in nodes_at_depth { @@ -180,24 +179,21 @@ impl FutureMoves { .arena .iter() .enumerate() - .filter(|(_, node)| node.parent.is_none()) - .map(|(idx, _)| idx) + .filter_map(|(idx, node)| node.parent.is_none().then_some(idx)) .collect(), }; root_nodes .into_iter() - .max_by_key(|&idx| self.arena[idx].value) - .map(|idx| (self.arena[idx].i, self.arena[idx].j)) + .map(|idx| &self.arena[idx]) + .max_by_key(|x| x.value) + .map(|x| (x.i, x.j)) } pub fn update_root(&mut self, i: usize, j: usize) -> bool { - let new_root = self - .arena - .iter() - .enumerate() - .find(|(_, node)| node.parent == self.current_root && node.i == i && node.j == j) - .map(|(idx, _)| idx); + let new_root = self.arena.iter().enumerate().find_map(|(idx, node)| { + (node.parent == self.current_root && node.i == i && node.j == j).then_some(idx) + }); if let Some(root) = new_root { self.current_root = Some(root);