Crate chess[−][src]
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? |
BoardBuilder | Represents a chess position that has not been validated for legality. |
CacheTable | Store a cache of entries, each with an associated hash. |
ChessMove | 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 |
BoardStatus | What is the status of this game? |
CastleRights | 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 |
GameResult | 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 |
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 |
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 |
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 |
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 |
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. |