diff --git a/src/lib.rs b/src/lib.rs index e041f9f..74e7e64 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -170,15 +170,15 @@ impl Board { source_rank.is_none_or(|rank| rank == lp.rank) && source_file.is_none_or(|file| file == lp.file) }) - .find(|lp| self.valid_moves(lp).contains((dest_file, dest_rank))) + .find(|lp| self.valid_moves(lp.clone()).contains(&(dest_file, dest_rank))) .unwrap(); self.capture_if_possible(dest_file, dest_rank); piece_to_move.rank = dest_rank; piece_to_move.file = dest_file; } - fn valid_moves(&self, lp: LocatedPiece) -> Vec<(usize, usize)> { - let mut moves = vec![];j + fn valid_moves(&self, lp: &LocatedPiece) -> Vec<(usize, usize)> { + let mut moves = vec![]; match lp.piece { Piece::Pawn => ,//todo: en passant (requires a list of moves to keep track of whether the previous //move was one that is en passantable?)