[board] Implement a custom Debug for Position
Newlines help a lot!
This commit is contained in:
parent
e23c20486e
commit
18d9a845e6
1 changed files with 28 additions and 1 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue