[board] Implement a custom Debug for Position

Newlines help a lot!
This commit is contained in:
Eryn Wells 2023-12-26 09:17:57 -07:00
parent e23c20486e
commit 18d9a845e6

View file

@ -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 {