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