A library for defining enums that can be used in compact bit sets. It supports arbitrarily
large enums, and has very basic support for using them in constants.
A bitboard is a value type wrapping a 64 bit integer which represents
a set of squares on a chess board. Each bit is mapped to a particular
square on the board, 0 -> H1, 1 -> G1,…, 8 -> H2,…, 63 -> A8. For
example if we know a piece to reside on a particular square we can
use a bitboard to to capture the available moves for that piece.
Represents the possible ways a game can be terminated, we only
consider a game to be terminated when a side has no legal moves
to make or if a special draw condition is met like position
repetition. If a side has no legal moves and is currently in check
then the game is lost, if it is not in check then the game is
drawn.
Trait representing a mutable state of play of a chess game
which can be evolved/devolved via (applicable) Move instances,
compute the set of legal moves and queried for a variety of
properties.
Represents some object which can determine whether a search should be
terminated given certain context about the current state. Implementations
are provided for Duration (caps the search based on time elapsed), for
usize which represents a maximum search depth and for a pair (Duration, usize)
which combines both checks.
API function for executing search on the calling thread, we pass a root
state and a terminator and compute the best move we can make from this
state within the duration constraints implied by the terminator.