use crate::{square::Square, bitboard::print, board::PieceType}; #[derive(Debug, Clone, PartialEq, Eq, Copy)] pub enum MoveKind { Quiet, Capture, Castle, EnPassant, DoublePush, Promotion(PieceType), } #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct Move { pub source: Square, pub target: Square, pub kind: MoveKind, } impl Move { pub fn print(&self) { let bb = self.source.to_bitboard() | self.target.to_bitboard(); print(bb, format!("{:?}", self).as_str()); } } #[cfg(test)] mod tests { use super::*; #[test] fn mock() { let mov = Move { source: Square::E2, target: Square::E4, kind: MoveKind::Quiet }; println!("{:?}", mov); } }