From 79c86e663f5af0a75153bd7735b086fe63152486 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Sun, 30 Jan 2022 18:38:54 +0100 Subject: [PATCH] :( --- src/lib.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 23c3f6a..2b28cc3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -17,8 +17,9 @@ pub trait PlayerState: Eq + Copy { pub trait GameState: Clone + std::fmt::Debug { type Player: PlayerState + std::fmt::Debug; + type NextStates: ExactSizeIterator; - fn next_states(&self) -> Box>; + fn next_states(&self) -> Self::NextStates; fn status(&self) -> Status; @@ -46,7 +47,7 @@ mod mcts { impl<'tree, S: GameState> Node<'tree, S> { fn new(state: S, player: S::Player, alloc: &'tree Bump) -> Node<'tree, S> { - Node { + Self { state, player, visited: Cell::new(0), @@ -273,7 +274,9 @@ pub mod tic_tac_toe { impl GameState for Board { type Player = Player; - fn next_states(&self) -> Box> { + type NextStates = std::vec::IntoIter; + + fn next_states(&self) -> Self::NextStates { let state_iter = self .board .iter() @@ -290,7 +293,7 @@ pub mod tic_tac_toe { .collect::>() .into_iter(); - Box::new(state_iter) + state_iter } fn status(&self) -> Status {