[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