[−][src]Crate chess
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.  |