diff --git a/board/src/position.rs b/board/src/position.rs index ce53798..e6645be 100644 --- a/board/src/position.rs +++ b/board/src/position.rs @@ -4,8 +4,9 @@ use crate::bitboard::BitBoard; use crate::piece::{Piece, PiecePlacementError}; use crate::square::Square; use std::fmt; +use std::fmt::Write; -#[derive(Clone, Debug, Eq, Hash, PartialEq)] +#[derive(Clone, Eq, Hash, PartialEq)] pub struct Position { /// Composite bitboards for all the pieces of a particular color. pieces_per_color: [BitBoard; 2], @@ -87,6 +88,32 @@ impl Position { fn bitboard_for_piece_mut(&mut self, piece: &Piece) -> &mut BitBoard { &mut self.pieces_per_type[piece.color as usize][piece.shape as usize] } + +impl fmt::Debug for Position { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut output = String::new(); + + output.push_str("Position {\n"); + write!(output, " color_to_move: {:?},\n", self.color_to_move)?; + + output.push_str(" pieces_per_color: [\n"); + for bb in self.pieces_per_color { + write!(output, " {bb:?},\n")?; + } + output.push_str(" ],\n"); + + output.push_str(" pieces_per_type: [\n"); + for color_bbs in self.pieces_per_type { + output.push_str(" [\n"); + for bb in color_bbs { + write!(output, " {bb:?},\n")?; + } + output.push_str(" ],\n"); + } + output.push_str(" ],\n"); + + write!(f, "{}", output) + } } impl fmt::Display for Position {