Crate shakmaty

source ·
Expand description

A library for chess move generation.

Examples

Generate legal moves in the starting position:

use shakmaty::{Chess, Position};

let pos = Chess::default();
let legals = pos.legals();
assert_eq!(legals.len(), 20);

Play moves:

use shakmaty::{Square, Move, Role};

// 1. e4
let pos = pos.play(&Move::Normal {
    role: Role::Pawn,
    from: Square::E2,
    to: Square::E4,
    capture: None,
    promotion: None,
})?;

Detect game end conditions:

assert!(!pos.is_checkmate());
assert!(!pos.is_stalemate());
assert!(!pos.is_insufficient_material());

assert_eq!(pos.outcome(), None); // no winner yet

Also supports FEN, SAN and UCI formats for positions and moves.

Re-exports

pub use crate::bitboard::Bitboard;

Modules

Attack and ray tables.
Sets of squares.
Parse and write Forsyth-Edwards-Notation.
Read and write Standard Algebraic Notation.
Parse and write moves in Universal Chess Interface representation.
Chess variants.

Structs

Piece positions on a board.
Castling paths and unmoved rooks.
A standard Chess position.
Error in case of illegal moves.
The material configuration of both sides.
The material configuration of one side.
Error when parsing an invalid material key.
Error when parsing an invalid square name.
A piece with Color and Role.
Iterator over the pieces of a Board.
Reasons for a Setup not beeing a legal Position.
The number of checks the respective side needs to give in order to win (in a game of Three-Check).

Enums

KingSide (O-O) or QueenSide (O-O-O).
White or Black.
A file of the chessboard.
Information about a move.
Outcome of a game.
A rank of the chessboard.
Piece types: Pawn, Knight, Bishop, Rook, Queen, King.
A square index.

Traits

A legal chess or chess variant position. See Chess for a concrete implementation.
A not necessarily legal position.

Functions

Counts legal move paths of a given length.

Type Definitions

A container for moves that can be stored inline on the stack.