Expand description
§Rust Chess Library
This is a chess move generation library for rust. It is designed to be fast, so that it can be used in a chess engine or UI without performance issues.
§Example
This generates all the moves on the starting chess position, and checks that the number of moves is correct.
use chess::{Board, MoveGen};
let board = Board::default();
let movegen = MoveGen::new_legal(&board);
assert_eq!(movegen.len(), 20);
Structs§
- BitBoard
- A good old-fashioned bitboard You do have access to the actual value, but you are probably better off using the implemented operators to work with this object.
- Board
- A representation of a chess board. That’s why you’re here, right?
- Board
Builder - Represents a chess position that has not been validated for legality.
- Cache
Table - Store a cache of entries, each with an associated hash.
- Chess
Move - Represent a ChessMove in memory
- Game
- For UI/UCI Servers, store a game object which allows you to determine draw by 3 fold repitition, draw offers, resignations, and moves.
- MoveGen
- An incremental move generator
- Square
- Represent a square on the chess board
Enums§
- Action
- Contains all actions supported within the game
- Board
Status - What is the status of this game?
- Castle
Rights - What castle rights does a particular player have?
- Color
- Represent a color.
- Error
- Sometimes, bad stuff happens.
- File
- Describe a file (column) on a chess board
- Game
Result - What was the result of this game?
- Piece
- Represent a chess piece as a very simple enum
- Rank
- Describe a rank (row) on a chess board
Constants§
- ALL_
CASTLE_ RIGHTS - Enumerate all castle rights.
- ALL_
COLORS - List all colors
- ALL_
FILES - Enumerate all files
- ALL_
PIECES - An array representing each piece type, in order of ascending value.
- ALL_
RANKS - Enumerate all ranks
- ALL_
SQUARES - A list of every square on the chessboard.
- EDGES
- What are all the edge squares on the
BitBoard
? - EMPTY
- An empty bitboard. It is sometimes useful to use !EMPTY to get the universe of squares.
- NUM_
CASTLE_ RIGHTS - How many different types of
CastleRights
are there? - NUM_
COLORS - How many colors are there?
- NUM_
FILES - How many files are there?
- NUM_
PIECES - How many piece types are there?
- NUM_
PROMOTION_ PIECES - How many ways can I promote?
- NUM_
RANKS - How many ranks are there?
- NUM_
SQUARES - How many squares are there?
- PROMOTION_
PIECES - What pieces can I promote to?
Functions§
- between
- Get a line between these two squares, not including the squares themselves.
- construct
- This is now a no-op. It does not need to be called anymore.
- get_
adjacent_ files - Get a
BitBoard
that represents the squares on the 1 or 2 files next to this file. - get_
bishop_ moves - Get the moves for a bishop on a particular square, given blockers blocking my movement.
- get_
bishop_ rays - Get the rays for a bishop on a particular square.
- get_
file - Get a
BitBoard
that represents all the squares on a particular file. - get_
king_ moves - Get the king moves for a particular square.
- get_
knight_ moves - Get the knight moves for a particular square.
- get_
pawn_ attacks - Get the pawn capture move for a particular square, given the pawn’s color and the potential victims
- get_
pawn_ moves - Get all the pawn moves for a particular square, given the pawn’s color and the potential blocking pieces and victims.
- get_
pawn_ quiets - Get the quiet pawn moves (non-captures) for a particular square, given the pawn’s color and the potential blocking pieces.
- get_
rank - Get a
BitBoard
that represents all the squares on a particular rank. - get_
rook_ moves - Get the moves for a rook on a particular square, given blockers blocking my movement.
- get_
rook_ rays - Get the rays for a rook on a particular square.
- line
- Get a line (extending to infinity, which in chess is 8 squares), given two squares. This line does extend past the squares.