Crate crabchess

Crate crabchess 

Source
Expand description

Tools for analyzing chess positions and building chess software in Rust.

crabchess is a 100% Rust Chess API with no unsafe code that enables you to build chess-related software tools. crabchess can import and export PGNs (Portable Game Notation) and FENs (Forsyth-Edwards Notation), determine the status of a game of chess, identify illegal move attempts, determine a game’s ECO opening, track players’ time remaining, and much more. crabchess works not only with standard chess but also random board configurations like Fischer random chess (Chess960).

§Example

Most of the core functionality is exposed through the ChessPosition struct, which represents a game of chess. The ChessPosition struct can be mutated and consulted as a game progresses.

use crabchess::prelude::*;
 
// Create board with default (Staunton) starting position.
let mut position = ChessPosition::new();
 
// Apply moves in SAN format.
position
    .apply_sans("e4 e6 Nf3 g6 d4 Bg7 e5 Ne7 g4".split(' '))
    .unwrap();
 
// Or, use the `Move` enum.
position
    .apply_move(Move::Castle {
        side: Side::Kingside,
        color: Color::Black,
        timer_update: None,
    })
    .unwrap();
 
assert_eq!(
    position.fen(),
    "rnbq1rk1/ppppnpbp/4p1p1/4P3/3P2P1/5N2/PPP2P1P/RNBQKB1R w KQ - 1 6"
);
 
position
    .apply_move(Move::Standard {
        initial_square: sq!(F3),
        piece_type: Type::Knight,
        piece_color: Color::White,
        final_square: sq!(G5),
        is_capture: false,
        timer_update: None,
    })
    .unwrap();

Modules§

board
This module contains types representing a chessboard and its squares.
openings
This module allows you to create performant trees of chess openings nested by move.
pgn
Tools for importing and exporting to Portable Game Notation.
pieces
This module contains the basic types that make up a chess piece.
positions
This module houses the ChessPosition struct, which holds the state of a game of chess, including its move history, clock history, PGN fields, and status.
prelude
squares
Tools for navigating and relating the squares on a chessboard.

Macros§

sq
Create a square from its file and rank.
sqs
Create a vector of squares.
test_move
Test a move on a ChessPosition without actually changing its state.