chess
chess copied to clipboard
Bug in Board Hash trait implementation
The implementation of the Hash trait uses only the field 'hash' which is only affected by the pieces positions. On the other hand, the implementation of PartialEq compare all fields of the struct. This causes unnecessary collisions in hashmap/hashset. To solve it, the implementation of the Hash trait could simply use the get_hash() func.
I do not believe this is true. The reason the hash trait is implemented the way it is is to incrementally update the hash function. This is a technique called Zobrist hashing.
If you can find an example of such a collision, I'd love to see it.
The current implementation does not include the castling right for exmaple, or en passant value
Ahh. You are correct. I misread the comment.