diff --git a/position/src/position.rs b/position/src/position.rs index bac5b01..e674b81 100644 --- a/position/src/position.rs +++ b/position/src/position.rs @@ -189,7 +189,12 @@ impl Position { let unmake_result = self.board.unmake_move(&last_move_record); - if unmake_result.is_err() { + if unmake_result.is_ok() { + if let Some(capture) = last_move_record.captured_piece { + let popped_piece = self.captures.pop(last_move_record.color); + debug_assert_eq!(Some(capture), popped_piece); + } + } else { self.moves.push(last_move_record); } diff --git a/position/src/position/captures.rs b/position/src/position/captures.rs index ddd9dac..f879c5b 100644 --- a/position/src/position/captures.rs +++ b/position/src/position/captures.rs @@ -17,6 +17,10 @@ impl CapturesList { self.0[color as usize].push(piece); } + pub fn pop(&mut self, color: Color) -> Option { + self.0[color as usize].pop() + } + pub fn is_empty(&self) -> bool { self.0.iter().all(Vec::is_empty) }